Lock

Lock实现提供了比使用synchronized方法和语句获得的更广泛的锁定操作。它们允许更灵活的结构,可能具有完全不同的属性,并且可以支持多个关联 Condition对象。
锁是用于控制多个线程对共享资源的访问的工具。通常,锁提供对共享资源的独占访问:一次只有一个线程可以获取锁,并且对共享资源的所有访问都需要首先获取锁。但是,某些锁可能允许并发访问共享资源,例如a的读锁定ReadWriteLock
synchronized方法或语句的使用提供了对与每个对象关联的隐式监视器锁的访问,但强制所有锁获取和释放以块结构方式发生:当获取多个锁时,它们必须以相反的顺序释放,并且所有锁必须在获取它们的相同词法范围内释放。
虽然synchronized方法和语句的作用域机制使得使用监视器锁进行编程变得更加容易,并且有助于避免许多涉及锁的常见编程错误,但有时您需要以更灵活的方式使用锁。例如,一些用于遍历并发访问的数据结构的算法需要使用“手动”或“链锁定”:获取节点A的锁,然后获取节点B,然后释放A并获取C,然后释放B并获得D等。所述的实施方式中 Lock接口通过允许获得并在不同的范围释放的锁,并允许获得并以任何顺序释放多个锁使得能够使用这样的技术
 
posted @ 2019-03-04 22:56  沟渠映明月  阅读(304)  评论(0编辑  收藏  举报