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();
}*/
}
}
}