在jdk1.6之后,synchronizes优化。增加了锁机制,默认情况下,偏向锁是关闭的,在什么情况下,会触发转向轻量锁的操作?
假设你的应用启动时,jvm启用了偏向锁,当你的被synchronized修饰的代码块只有1个线程执行时,则这段代码块是偏向锁。
当从某一时刻起,被synchronized修饰的代码块存在2+个线程执行时,则会从偏向锁升级为轻量锁。
在jdk1.6之后,默认情况下,是启动了偏向锁的,只有一个线程加上synchronized后也是偏向锁,这种情况下只要有一个新的线程来竞争,马上就升级为轻量级锁,
是的,偏向锁默认是启动的
额外分享一点,偏向锁不是一把锁,偏向锁和无锁是一样的,偏向锁只是多了个标志位,偏向你使用,在运行过程中不会给代码上锁,