并发:同步与锁定

时间:2010-09-24 19:17:02

标签: java concurrency

Java中的synchronized和lock有什么区别?

2 个答案:

答案 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退出后立即进入监视器。

相关问题