本帖最后由 librazeng 于 2013-5-18 00:21 编辑
没读,也怕读不懂源码,所以对锁的理解不深入。谁能简明扼要的讲讲啊。
API中的Lock描述:
Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 The Java Language Specification, Third Edition (17.4 Memory Model) 中所描述的:
- 成功的 lock 操作与成功的 Lock 操作具有同样的内存同步效应。
- 成功的 unlock 操作与成功的 Unlock 操作具有同样的内存同步效应。
不成功的锁定与取消锁定操作以及重入锁定/取消锁定操作都不需要任何内存同步效果。 实现注意事项三种形式的锁获取(可中断、不可中断和定时)在其性能特征、排序保证或其他实现质量上可能会有所不同。而且,对于给定的 Lock 类,可能没有中断正在进行的 锁获取的能力。因此,并不要求实现为所有三种形式的锁获取定义相同的保证或语义,也不要求其支持中断正在进行的锁获取。实现必需清楚地对每个锁定方法所提供的语义和保证进行记录。还必须遵守此接口中定义的中断语义,以便为锁获取中断提供支持:完全支持中断,或仅在进入方法时支持中断。
由于中断通常意味着取消,而通常又很少进行中断检查,因此,相对于普通方法返回而言,实现可能更喜欢响应某个中断。即使出现在另一个操作后的中断可能会释放线程锁时也是如此。实现应记录此行为。
API中Condition描述:public interface ConditionCondition 将 Object 监视器方法(http://www.cnblogs.com/psjay/archive/2010/04/01/1702465.html
Java 理论与实践: 处理 InterruptedException
http://www.ibm.com/developerworks/cn/java/j-jtp05236.html
|