线程在从互斥同步到阻塞状态之间切换的消耗是比较大的,并且一般锁的持有时间是很短的,这意味着要频繁的切换两种状态,而自旋锁指的是在线程获取不到锁的时候,不会立马进入阻塞状态,而是先进行循环自旋获取锁,如果在自旋期间获取到锁了,就可以避免进入阻塞状态。当然并不能无限期地阻塞下去,JDK1.6 之后引入自适应自旋锁,会根据锁的持有对象的状态以及自旋次数来决定是否进入阻塞等待。自旋期间需要使用到CPU资源,因此只适用于锁持有时间很短的情况。