synchronized 实现原理
synchronized 是由一对 monitorenter/monitorexit 指令实现的,monitor 对象是同步的基本实现单元。Java 6 以前,monitor 的实现完全是依靠操作系统内部的互斥锁,因为需要进行用户态到内核态的切换,因此同步操作是一个无差别的重量级操作,性能很低。Java 6中,Java 虚拟机对此进行了很大的改进,提供了三种不同的 monitor 实现,即通常所说
·
synchronized 是由一对 monitorenter/monitorexit 指令实现的,monitor 对象是同步的基本实现单元。
Java 6 以前,monitor 的实现完全依靠操作系统内部的互斥锁,因为需要进行用户态到内核态的切换,因此同步操作是一个无差别的重量级操作,性能很低。
Java 6中 ,Java 虚拟机对此进行了很大的改进,提供了三种不同的 monitor 实现,即通常所说的三种不同的锁:偏向锁(Biased Locking)、轻量级锁和重量级锁,从而告别一直是重量级所的问题,性能获得较大的提升。
更多推荐
已为社区贡献15条内容
所有评论(0)