Java 5中的Lock和ReentrantLock有什么区别?

时间:2016-04-22 16:49:15

标签: java multithreading concurrency java.util.concurrent reentrantlock

我不明白它们之间的区别。我认为来自锁定界面的锁也是可重入的,那么它们之间的区别是什么?你什么时候使用它们?

1 个答案:

答案 0 :(得分:8)

Lock界面。它定义了一组所有锁应该具有的方法。

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

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