9

我不明白他们之间的区别。我认为来自锁接口的锁也是可重入的,那么它们之间有什么区别?你什么时候使用每个?

4

1 回答 1

13

Lock是一个接口。它定义了所有锁都应该具有的一组方法。

ReentrantLock是实现接口的具体类。Lock它实现了 中定义的所有方法Lock,还有更多。此外,正如名称中提到的,锁是可重入的,这意味着同一个线程可以根据需要多次获取锁。synchronized这与关键字提供的本机对象监视器锁本质上是相同的行为。

Lock接口使您可以实现自己的锁。例如,您可以设计一个发出 HTTP 请求(执行网络 I/O)来锁定远程资源的锁。另一个使用你的锁的类不会关心你的锁的内部细节;它只关心您的自定义锁是否尊重Lock界面。

于 2016-04-22T17:56:53.917 回答