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

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

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

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

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

在基于鎖的算法中,如果一個線程持有了鎖,那么其他的線程將無法進(jìn)行下去。使用鎖雖然可以保證對資源的一致性訪問,但是在掛起和恢復(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,進(jìn)行比較的值A(chǔ),準(zhǔn)備寫入的值B。只有當(dāng)V和A相等的時候,才會寫入B。無論是否寫入成功,都會返回V。翻譯過來就是“我認(rèn)為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的詳細(xì)內(nèi)容,更多關(guān)于Java非阻塞同步機制和CAS的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 广西资质代办_建筑资质代办_南宁资质代办理_新办、增项、升级-正明集团 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 | 正压送风机-多叶送风口-板式排烟口-德州志诺通风设备 | 最新电影-好看的电视剧大全-朝夕电影网 | 立式矫直机_卧式矫直机-无锡金矫机械制造有限公司 | 科普仪器菏泽市教育教学仪器总厂 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | 无线对讲-无线对讲系统解决方案-重庆畅博通信 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 聚合氯化铝价格_聚合氯化铝厂家_pac絮凝剂-唐达净水官网 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 【化妆品备案】进口化妆品备案流程-深圳美尚美化妆品有限公司 | 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | PTFE接头|聚四氟乙烯螺丝|阀门|薄膜|消解罐|聚四氟乙烯球-嘉兴市方圆氟塑制品有限公司 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 衡阳耐适防护科技有限公司——威仕盾焊接防护用品官网/焊工手套/焊接防护服/皮革防护手套 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | 断桥铝破碎机_发动机破碎机_杂铝破碎机厂家价格-皓星机械 | 电子厂招聘_工厂招聘_普工招聘_小时工招聘信息平台-众立方招工网 | 不锈钢水管-不锈钢燃气管-卫生级不锈钢管件-不锈钢食品级水管-广东双兴新材料集团有限公司 | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 | 低合金板|安阳低合金板|河南低合金板|高强度板|桥梁板_安阳润兴 北京租车牌|京牌指标租赁|小客车指标出租 | cnc精密加工_数控机械加工_非标平键定制生产厂家_扬州沃佳机械有限公司 | 下水道疏通_管道疏通_马桶疏通_附近疏通电话- 立刻通 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | CTAB,表面活性剂1631溴型(十六烷基三甲基溴化铵)-上海升纬化工原料有限公司 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 凝胶成像仪,化学发光凝胶成像系统,凝胶成像分析系统-上海培清科技有限公司 | 土壤养分检测仪|土壤水分|土壤紧实度测定仪|土壤墒情监测系统-土壤仪器网 | 防火窗_耐火窗_防火门厂家_防火卷帘门-重庆三乐门业有限公司 | 管形母线,全绝缘铜管母线厂家-山东佰特电气科技有限公司 | 深圳市万色印象美业有限公司 | 上海洗地机-洗地机厂家-全自动洗地机-手推式洗地机-上海滢皓洗地机 | 盘古网络技术有限公司|