synchronized 是由一对 monitorenter/monitorexit 指令实现的,monitor 对象是同步的基本实现单元。

Java 6 以前,monitor 的实现完全依靠操作系统内部的互斥锁,因为需要进行用户态到内核态的切换,因此同步操作是一个无差别的重量级操作,性能很低。

Java 6中 ,Java 虚拟机对此进行了很大的改进,提供了三种不同的 monitor 实现,即通常所说的三种不同的锁:偏向锁(Biased Locking)轻量级锁重量级锁,从而告别一直是重量级所的问题,性能获得较大的提升。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐