码迷,mamicode.com
首页 > 其他好文 > 详细

自旋锁

时间:2017-05-06 01:03:43      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:时间   pinning   style   span   用户   支持   资源   阻塞   意义   

自旋锁

自旋锁可以使线程在没有取得锁的时候,可以不放弃CPU时间片,不被挂起,而转去执行一个空循环,(即所谓的自旋,就是自己执行空循环),若在若干个空循环后,线程如果可以获得锁,则继续执行。若线程依然不能获得锁,才会被挂起。可见自旋锁是一种非阻塞锁

使用自旋锁后,线程被挂起的几率相对减少,线程执行的连贯性相对加强。因此,对于那些锁竞争不是很激烈,锁占用时间很短的并发线程,具有一定的积极意义,但对于锁竞争激烈,单线程锁占用很长时间的并发程序,自旋锁在自旋等待后,往往依然无法获得对应的锁,不仅浪费了CPU时间,最终还是免不了被挂起的操作 ,反而浪费了系统的资源。

在JDK1.6中,Java虚拟机提供-XX:+UseSpinning参数来开启自旋锁,使用-XX:PreBlockSpin参数来设置自旋锁等待的次数。

在JDK1.7开始,自旋锁的参数被取消,虚拟机不再支持由用户配置自旋锁,自旋锁总是会执行,自旋锁次数也由虚拟机自动调整。

自旋锁

标签:时间   pinning   style   span   用户   支持   资源   阻塞   意义   

原文地址:http://www.cnblogs.com/loritin/p/6815148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!