1.interface Lcok
有tryLock()方法和lock()方法一样都会取得锁,取不到它会返回boolean值false。我们可以将thread导向其他不需要取得lock的task上。
此方法要在指定期间内等到lock怎么办?有带两个参数的方法
boolean tryLock(long time,TimeUnit unit)throws InterruptedException;
第一个参数指定时间单位的数目
第二个参数指定第一个参数应用什么单位来解释
如果要指定50毫秒。
long的值设置成50,TimeUnit值设置成TimeUnit.MILLISECONDS
此方法会在指定时间内等待lock类时tryLock()方法,会在没有取得lock时返回false
2.nested lock --用synchronized,系统会报错追踪递归取得lock的数目。
ReentrantLock对象会对内部的nested lock要求计数递增。调用unlock()递减此计数
是否有可能检测lock被递归取得了多少次?使用synchronized是不能知道的。Lock interface没有提供方法来检测嵌套取得的次数。
在ReentrantLock中public int getHoldCount();方法返回当前thread对lock所要求的数量。具体看文档。
3.两个同步方法,取得两个以上的lock的时候顺序要相同,否则出现死锁。参考第二章后半部分。
4.Condition的应用
5.线程不能共享存储器上的数据。只能共享主存上的。