我不明白它们之间的区别。我认为来自锁定界面的锁也是可重入的,那么它们之间的区别是什么?你什么时候使用它们?
答案 0 :(得分:8)
Lock
是界面。它定义了一组所有锁应该具有的方法。
ReentrantLock
是一个实现Lock
接口的具体类。它实现了Lock
中定义的所有方法,以及更多。另外,正如名称中所提到的,锁是可重入的,这意味着同一个线程可以根据需要多次获取锁。这与synchronized
关键字提供的本机对象监视器锁基本相同。
Lock
界面使您可以实现自己的锁定。例如,您可以设计一个锁,该锁发出HTTP请求(执行网络I / O)以锁定远程资源。另一个使用你锁的课程并不关心你锁的内部细节;它只关心您的自定义锁是否尊重Lock
接口。