自选听起来很高大上,其实就是等待的意思。这个是基于一种假设,正在持有锁的对象不会长时间占用,会在很短的时间释放资源,那么其他需要获取该锁的线程只需要原地等待一会就行,这个原地等待就是自选操作。
优点:不用阻塞线程,这样就不会有很多其他的操作,比如保存那些线程私有的数据啊等等。
缺点:首先一个很明显的缺点就是CPU会做无用功,因为自旋。并且如果一个线程长时间占有锁,那么这个性能就会大大下降。
JDK关于自旋锁的设计:早期的jdk版本都是给自旋的时间设置了一个阈值,超时就阻塞线程,jdk1.6之后添加了自适应的自旋时间,会动态调整。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。