在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?

Posted freak-lew

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?相关的知识,希望对你有一定的参考价值。

  在Java虚拟机中,每个对象(object和class)通过某种逻辑关联监视器,每个监视器和一个对象引用相关联,为了实现监视器的互斥功能,每个对象都关联着一把锁。

  一旦方法或者代码块被synchronized修饰,那么这个部分就放入了监视器的监视区域,确保一次只有一个线程执行该部分代码,线程必须在获取锁之前不允许执行该部分代码。

  Java提供了显示监视器(Lock)和隐式监视器(synchronized)两种锁方案。

以上是关于在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?的主要内容,如果未能解决你的问题,请参考以下文章

.NET 中的锁定(监视器)内部实现

java虚拟机之线程同步

C# 线程同步之排它锁/Monitor监视器类

如何在没有排他锁的线程中使用监视器?

JAVA多线程之Synchronize 关键字原理

对象级别锁 vs 类级别锁 – Java