synchronized锁升级

volatile区别在jdk1.5版本(包含)之前,锁的状态只有两种状态:无锁状态和重量级锁状态,只要有线程访问共享资源对象,则锁直接成为重量级锁,jdk1.6版本后,对synchronized锁进行了优化,新加了“偏向锁”和“轻量级锁”,用来减少上下文的切换以提高性能,所以锁就有了4种状态。注意:无锁到偏向锁这不是升级,是在偏向锁打开后,,没有从无锁升级到偏向锁的过程。偏向锁未开启,会直接从无锁升级到轻量级锁,偏向锁开启时,会从偏向锁升级到轻量级锁。