国产探花免费观看_亚洲丰满少妇自慰呻吟_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內存屏障的實現請點擊這里! 這里寫圖片描述
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 聂荣县| 家居| 玛多县| 宣汉县| 防城港市| 福贡县| 囊谦县| 古丈县| 龙胜| 澄迈县| 大姚县| 读书| 高州市| 丽江市| 云阳县| 安西县| 托里县| 清苑县| 温州市| 阿拉善盟| 靖西县| 兴城市| 邻水| 额尔古纳市| 大竹县| 滦南县| 安溪县| 临洮县| 崇仁县| 沽源县| 黄浦区| 乳山市| 青州市| 湖州市| 乌拉特中旗| 遂宁市| 满洲里市| 沅江市| 介休市| 丰城市| 府谷县|