Java中的synchronized和lock有什么区别?
答案 0 :(得分:2)
synchronized
是一种语言关键字;锁是对象。
当一个方法或代码块被标记为synchronized时,你就是说某个锁定对象(可以在synchronized语法中指定)必须由方法或块获取才能执行。
答案 1 :(得分:1)
synchronized
关键字和Lock
对象都用于在Java中实现同步。 Synchronized
对Java中的每个Object
拥有的监视机制进行操作,而lock是一个更简单的对象,它是监视器的构建块。我相信基本上问题是关于显示器和锁之间的区别。
诸如semaphore
之类的锁是一种简单的机制,只能通过互斥来实现同步。如果一个线程获得(lock.acquire()
)一个特定的锁,则在第一个线程释放它之前,其他线程不能获得相同的锁(lock.release()
)。另一方面的监视器不仅在互斥上运行,而且在条件变量上运行。在线程T1
进入对象线程监视器{(1}}打算进入同一监视器的情况下,T2
将等待T2
退出监视器并在现代JVM { {1}}会在T1
退出后立即进入监视器。