自旋锁?自适应自旋锁?

551 阅读1分钟
  1. 自旋锁是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU。

  2. jdk1.6引用了更加聪明的自旋锁,叫做自适应自旋锁,它的自旋次数是会变的。用大白话来讲,就是当一个线程如果上次自旋成功了,那么这次自旋的次数会更加多,因为虚拟机认为既然上次成功了,那么这次自旋也很有可能会再次成功;反之,如果某个锁很少有自旋成功,那么以后自旋的次数会减少甚至省略掉自旋的过程,以免浪费处理器资源。