JAVA中有多少种类型的锁

Sum*_*gar 2 java multithreading locking

我在接受采访时被问到java中有多少种类型的锁,我知道Synchronized(this)或synchronized方法,以及Reentrant Lock.我可以在对象上获得任何其他类型的锁吗?

Sol*_*low 5

我不知道你正在面试的工作,但如果在面试中问你这个问题,那么我就不会寻找正确的答案.我会尝试开始讨论,告诉我锁定意味着什么,它是如何工作的,你如何使用它,你或你的同伴犯了什么样的错误,以及你从你/他们的错误中学到了什么.

我想知道你是否理解语言提供的锁定与库提供的锁定之间的区别,以及底层硬件提供的锁定.

如果你不确切地知道Java语言中有多少种不同类型的锁,那么地球上没有你被取消资格的工作,但是如果你不这样做,你就不应该做很多工作.知道如何谈论它.


Dav*_*INO 1

从 javadoc 来看,Lock这些是已实现的类:

  • ReentrantLock
  • ReentrantReadWriteLock.ReadLock
  • ReentrantReadWriteLock.WriteLock

ReentrantLock

可重入互斥锁,与使用同步方法和语句访问的隐式监视器锁具有相同的基本行为和语义,但具有扩展功能。


ReentrantReadWriteLock(从中您可以获得对ReentrantReadWriteLock.ReadLock和 的引用ReentrantReadWriteLock.WriteLock):

ReadWriteLock 的实现,支持与 ReentrantLock 类似的语义。