我在接受采访时被问到java中有多少种类型的锁,我知道Synchronized(this)或synchronized方法,以及Reentrant Lock。我可以在对象上获得任何其他类型的锁吗?
答案 0 :(得分:5)
我不知道你正在面试的工作,但如果我在面试中问你这个问题,那么我就不会寻找正确的答案。我会尝试开始讨论,告诉我锁定意味着什么,它是如何工作的,你如何使用它,你或你的同伴犯了什么样的错误,以及你从你/他们的错误中学到了什么。
我想知道你是否理解语言提供的锁定与库提供的锁定之间的区别,以及底层硬件提供的锁定。
如果您不确切地知道Java语言中有多少种不同类型的锁,那么地球上没有任何工作被取消资格,但如果您有很多工作要做,那么您不应该这样做不知道如何谈论。
答案 1 :(得分:2)
正如其他人已经提到的,有几种方法可以同步代码。
据我所知,Java中基本上有三种不同的同步功能:
答案 2 :(得分:0)
从Lock
的javadoc开始,这些是已实现的类:
ReentrantLock
ReentrantReadWriteLock.ReadLock
ReentrantReadWriteLock.WriteLock
可重入互斥锁具有与使用同步方法和语句访问的隐式监视器锁相同的基本行为和语义,但具有扩展功能。
ReentrantReadWriteLock
(您可以获取对ReentrantReadWriteLock.ReadLock
和ReentrantReadWriteLock.WriteLock
的引用):
ReadWriteLock的实现,支持与ReentrantLock类似的语义。