国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

鎖的一些基本概念

2019-11-08 02:59:33
字體:
來源:轉載
供稿:網友

公平鎖VS非公平鎖

公平鎖(Fair):加鎖前檢查是否有排隊等待的線程,優先排隊等待的線程,先來先得,例如每個線程搶占鎖的順序為先后調用lock方法的順序依次獲取鎖,類似于排隊吃飯。

非公平鎖(Nonfair):加鎖時不考慮排隊等待問題,直接嘗試獲取鎖,獲取不到自動到隊尾等待,例如每個線程搶占鎖的順序不定,誰運氣好,誰就獲取到鎖,和調用lock方法的先后順序無關,類似于堵車時,加塞的那些XXXX。

synchronized就是非公平鎖,它無法保證等待的線程獲取鎖的順序; ReentrantLock 默認的lock()方法采用的是非公平鎖,但可以選擇公平鎖實現的方式。 public ReentrantLock(boolean fair) //根據參數初始化為公平鎖或者非公平鎖 { sync = fair ? new FairSync() : new NonfairSync(); }

Volatile

通過java內存模型(JMM)保證volatile的可見性和有序性。編譯器和處理器不會對存在數據依賴關系的操作做重排序,因為這種重排序會改變執行結果。而線程與線程之間使用的是共享變量的副本,副本沒有依賴關系導致線程間可能出現重排序的問題。JMM通過java進程之間的通信,控制主內存與每個線程的本地內存之間的交互,來為java程序員提供內存可見性保證。Volatile通過內存屏障保證寫的數據即時刷新到主內存,來防止線程間的重排序問題,Volatile內存屏障的實現請點擊這里! 這里寫圖片描述
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东城区| 静海县| 大庆市| 大余县| 英山县| 商城县| 莱州市| 广水市| 射阳县| 乌拉特前旗| 龙川县| 兰溪市| 广德县| 元阳县| 北票市| 泰和县| 如皋市| 华坪县| 台中市| 南丹县| 甘泉县| 土默特右旗| 雅安市| 疏勒县| 沙河市| 宣化县| 土默特左旗| 黑山县| 和顺县| 孙吴县| 建瓯市| 张家界市| 泌阳县| 天气| 南溪县| 大连市| 东阿县| 乌鲁木齐市| 灯塔市| 精河县| 汽车|