同步 4

package thread;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

public class TestOne {

    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
    public static void main(String[] args) {

        /**
         * 14.5.12  为每个线程构造一个实例
         * 为了避免共享变量,
         * ThreadLocal   辅助类为各个线程提供各自的实例。
         * 
         * 
         * 有几个方法
         * get
         * set
         * current
         * remove
         * 
         * 
         * 14.5.13 锁测试和超时
         * 
         * tryLock( )
         * 尝试获得锁,如果成功返回true,如果失败立刻获取其他的锁。
         * 
         * await(long time,TimeUtil unit)
         * 进入条件的等待集,直到线程从等待集中移除或者等待了指定的时间。如果因为等待时间到了返回就返回false。否则返回true
         * 
         * 
         * 14.5.14  读写锁 
         * readLock()得到一个可以被一个或多个线程公用的读锁,会排斥所有写锁
         * writeLock() 得到一个写锁 ,会排斥所有读写操作
         */

        ReentrantReadWriteLock rw = new ReentrantReadWriteLock();
        Lock readLock = rw.readLock();
        Lock writeLock = rw.writeLock();
        readLock.lock();
        writeLock.lock();
        
        ThreadLocal threadLocal = new ThreadLocal();
//        threadLocal.get();
        System.out.println(threadLocal.get());
        
        new TestOne().method1();
    }
    
    //会有问题?没看出来
    public void method1(){
        for(int i=0;i<500;i++){
            new Thread(){
                public void run() {
                    String dateStr =  sdf.format(new Date());
                    System.out.println(dateStr);
                }
            }.start();
            /*try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }*/
        }
    }

    
    
}
原文地址:https://www.cnblogs.com/lxh520/p/8476776.html