synchronized 内部实现原理
时间: 2023-12-07 11:29:13 浏览: 82
Java中synchronized实现原理详解
5星 · 资源好评率100%
synchronized关键字在JVM中的实现是通过进入和退出Monitor对象来实现方法同步和代码块同步的。每个对象都有一个与之关联的Monitor,当一个Monitor被持有后,它将处于锁定状态。具体实现细节可能有所不同,但可以通过成对的MonitorEnter和MonitorExit指令来实现。
synchronized关键字提供了对临界资源的同步互斥访问。它是一种对象锁,作用粒度是对象,而不是引用变量。这意味着多个线程可以同时访问同一个对象的非同步方法,但只有一个线程能够进入该对象的synchronized方法或synchronized代码块。synchronized关键字还支持重入,即一个线程可以多次获取同一个对象的锁,但也需要相应地释放多次锁。这种重入的最大作用是避免死锁。
然而,需要注意的是,尽管synchronized关键字能够有效解决代码重排问题,但它无法完全禁止指令重排和处理器优化,实际上仍然会发生重排。重排后的指令顺序只会影响当前线程,但有可能会影响其他线程。
阅读全文