电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

淺談Java非阻塞同步機制和CAS

瀏覽:88日期:2022-08-11 14:06:11
目錄什么是非阻塞同步悲觀鎖和樂觀鎖CAS什么是非阻塞同步

非阻塞同步的意思是多個線程在競爭相同的數(shù)據(jù)時候不會發(fā)生阻塞,從而能夠在更加細粒度的維度上進行協(xié)調(diào),從而極大的減少線程調(diào)度的開銷,從而提升效率。非阻塞算法不存在鎖的機制也就不存在死鎖的問題。

在基于鎖的算法中,如果一個線程持有了鎖,那么其他的線程將無法進行下去。使用鎖雖然可以保證對資源的一致性訪問,但是在掛起和恢復(fù)線程的執(zhí)行過程中存在非常大的開銷,如果鎖上面存在著大量的競爭,那么有可能調(diào)度開銷比實際工作開銷還要高。

悲觀鎖和樂觀鎖

我們知道獨占鎖是一個悲觀鎖,悲觀鎖的意思就是假設(shè)最壞的情況,如果你不鎖定該資源,那么就有其他的線程會修改該資源。悲觀鎖雖然可以保證任務(wù)的順利執(zhí)行,但是效率不高。

樂觀鎖就是假設(shè)其他的線程不會更改要處理的資源,但是我們在更新資源的時候需要判斷該資源是否被別的線程所更改。如果被更改那么更新失敗,我們可以重試,如果沒有被更改,那么更新成功。

使用樂觀鎖的前提是假設(shè)大多數(shù)時間系統(tǒng)對資源的更新是不會產(chǎn)生沖突的。

樂觀鎖的原子性比較和更新操作,一般都是由底層的硬件支持的。

CAS

大多數(shù)的處理器都實現(xiàn)了一個CAS指令(compare and swap),通常來說一個CAS接收三個參數(shù),數(shù)據(jù)的現(xiàn)值V,進行比較的值A(chǔ),準備寫入的值B。只有當(dāng)V和A相等的時候,才會寫入B。無論是否寫入成功,都會返回V。翻譯過來就是“我認為V現(xiàn)在的值是A,如果是那么將V的值更新為B,否則不修改V的值,并告訴我現(xiàn)在V的值是多少。”

這就是CAS的含義,JDK中的并發(fā)類是通過使用Unsafe類來使用CAS的,我們可以自己構(gòu)建一個并發(fā)類,如下所示:

public class CasCounter { private static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long valueOffset; private volatile int value; static {try { valueOffset = unsafe.objectFieldOffset (CasCounter.class.getDeclaredField('value'));} catch (Exception ex) { throw new Error(ex); } } public CasCounter(int initialValue) {value = initialValue; } public CasCounter() { } public final int get() {return value; } public final void set(int newValue) {value = newValue; } public final boolean compareAndSet(int expect, int update) {return unsafe.compareAndSwapInt(this, valueOffset, expect, update); }}

上面的例子中,我們定義了一個原子操作compareAndSet, 它內(nèi)部調(diào)用了unsafe的compareAndSwapInt方法。

看起來上面的CAS使用比直接使用鎖復(fù)雜,但實際上在JVM中實現(xiàn)鎖定時需要遍歷JVM中一條非常復(fù)雜的代碼路徑,并可能導(dǎo)致操作系統(tǒng)級的鎖定,線程掛機和上下文切換等操作。在最好的情況下,鎖定需要執(zhí)行一次CAS命令。

CAS的主要缺點就是需要調(diào)用者自己來處理競爭問題(重試,回退,放棄),而在鎖中可以自動處理這些問題。

前面的文章我們也講到了原子變量,原子變量的底層就是使用CAS。

以上就是淺談Java非阻塞同步機制和CAS的詳細內(nèi)容,更多關(guān)于Java非阻塞同步機制和CAS的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Java
相關(guān)文章:
主站蜘蛛池模板: 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | LED投光灯-工矿灯-led路灯头-工业灯具 - 山东普瑞斯照明科技有限公司 | 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | MES系统工业智能终端_生产管理看板/安灯/ESOP/静电监控_讯鹏科技 | 北京律师咨询_知名专业北京律师事务所_免费法律咨询 | 塑钢课桌椅、学生课桌椅、课桌椅厂家-学仕教育设备首页 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 今日热点_实时热点_奇闻异事_趣闻趣事_灵异事件 - 奇闻事件 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 常州翔天实验仪器厂-恒温振荡器-台式恒温振荡器-微量血液离心机 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 电镀标牌_电铸标牌_金属标贴_不锈钢标牌厂家_深圳市宝利丰精密科技有限公司 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 清洁设备_洗地机/扫地机厂家_全自动洗地机_橙犀清洁设备官网 | Jaeaiot捷易科技-英伟达AI显卡模组/GPU整机服务器供应商 | 成都竞价托管_抖音代运营_网站建设_成都SEM外包-成都智网创联网络科技有限公司 | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | 400电话_400电话申请_866元/年_【400电话官方业务办理】-俏号网 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 厦门网站建设_厦门网站设计_小程序开发_网站制作公司【麦格科技】 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 | 全屋整木定制-橱柜,家具定制-四川峨眉山龙马木业有限公司 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 铁素体测量仪/检测仪/铁素体含量测试仪-苏州圣光仪器有限公司 | 西安烟道厂家_排气道厂家_包立管厂家「陕西西安」推荐西安天宇烟道 | 釜溪印象网络 - Powered by Discuz! | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 防火卷帘门价格-聊城一维工贸特级防火卷帘门厂家▲ | 管理会计网-PCMA初级管理会计,中级管理会计考试网站 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 利浦顿蒸汽发生器厂家-电蒸汽发生器/燃气蒸汽发生器_湖北利浦顿热能科技有限公司官网 | 亳州网络公司 - 亳州网站制作 - 亳州网站建设 - 亳州易天科技 | 长沙中央空调维修,中央空调清洗维保,空气能热水工程,价格,公司就找维小保-湖南维小保环保科技有限公司 | 齿轮减速电机一体机_蜗轮蜗杆减速马达-德国BOSERL齿轮减速机带电机生产厂家 | 全自动面膜机_面膜折叠机价格_面膜灌装机定制_高速折棉机厂家-深圳市益豪科技有限公司 |