栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【JVM】Java虚拟机中的锁概念

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【JVM】Java虚拟机中的锁概念

适应性自旋 (adaptive spinning)
在JUC中我们经常会用到自旋锁,什么是自旋锁呢?
让当前线程进行自旋(相当于在while语句中不停的执行去获取资源),如果在自旋完成后前面锁定同步资源的线程已经释放了锁,那么当前线程就可以不必阻塞而是直接获取同步资源,从而避免切换线程的开销,这就是自旋锁。

通过对自旋锁的理解我们大概知道了其工作方式,虽然自旋锁是非阻塞的,但是并非所有情况自旋锁都是一种最优解。自旋等待虽然避免了线程切换的开销,但它要占用处理器时间(因为线程自旋相当于一直在while语句中执行,CPU资源就会被一直占用)。如果锁被占用的时间很短,自旋等待的效果就会非常好。反之,如果锁被占用的时间很长,那么自旋的线程也会浪费掉处理器资源。
适应性自旋又是什么呢?

适应性自旋即自旋的时间(次数)不再固定,根据获取到锁资源的频次和概率增加自旋时间或者省略自旋。
偏向锁 (biased locking)
偏向锁是虚拟机中的一种优化技术。是指线程经常性的重新获取锁,在当前线程连续获取该锁的情况下,该锁资源就会产生偏向让该线程已更小的开销来获取锁资源。当其他线程要获取该锁资源,必须要等锁偏向的线程撤销锁偏向(释放锁)。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/852202.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号