阅读背景:

Java的多线程机制系列:(三)synchronized的同步原理

来源:互联网 

synchronized关键字是JDK5之实现锁(包括互斥性和可见性)的唯一途径(volatile关键字能保证可见性,但不能保证互斥性,详细参见后文关于vloatile的详述章节),其在字节码上编译为monitorenter和monitorexit这样的JVM层次的原语(原语的意思是这个命令是原子执行的,中间不可中断,详细可查阅原语的概念,这里monitorenter和monitorexit是原语对,表明它们之间的代码段是原子执行的,所以保证了锁机制中的互斥性。如果反编译会发现同步函数的前面加上了monitorenter命令,而在其结束处加上monitorexit命令),JVM通过调用操作系统的互斥原语mutex来实现,被阻塞的线程会被挂起、等待重新调度,也就是如前面“用户态和内核态”章节所说的,在两个态之间来回切换,对性能有较大影响。synchronized关键字是JDK5之实现锁(包括互斥性和可见性)的唯一途径(volati




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: