synchronized 是由一对 monitorenter/monitorexit 指令实现的,monitor 对象是同步的基本实现单元。
在 Java 6 之前,monitor 的实现完全是依靠 *** 作系统内部的互斥锁,因为需要进行用户态到内核态的切换,所以同步 *** 作是一个无差别的重量级 *** 作,性能也很低。
但在 Java 6 的时候,Java 虚拟机 对此进行了大刀阔斧地改进,提供了三种不同的 monitor 实现,也就是常说的三种不同的锁:偏向锁(Biased Locking)、轻量级锁和重量级锁,大大改进了其性能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)