歡×××”,查看更多源碼系列文章, 與彤哥一起暢游源碼的海洋。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供皇姑網(wǎng)站建設(shè)、皇姑做網(wǎng)站、皇姑網(wǎng)站設(shè)計、皇姑網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、皇姑企業(yè)網(wǎng)站模板建站服務(wù),十載皇姑做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。(手機橫屏看源碼更方便)
同步系列到此就結(jié)束了,本篇文章對同步系列做一個總結(jié)。
下面是關(guān)于同步系列的一份腦圖,列舉了主要的知識點和問題點,看過本系列文章的同學(xué)可以根據(jù)腦圖自行回顧所學(xué)的內(nèi)容,也可以作為面試前的準備。
如果有需要原圖的同學(xué),可×××哥讀源碼”,回復(fù)“sync”領(lǐng)取。
所謂同步,就是保證多線程(包括多進程)對共享資源的讀寫能夠安全有效的運行。
根據(jù)同步的運用場景的不同,實現(xiàn)同步的方式也是隨之一起變化,但是總結(jié)下來,這些實現(xiàn)方式之間又有一些共通之處。
不管是互斥鎖、讀寫鎖、信號量、CountDownLatch、回環(huán)柵欄、Phaser,還是各種分布式鎖,它們都是基于對同一個共享變量(狀態(tài)變量)的控制,以達到同步的目的。
互斥鎖,state為大于等于1(可重入)表示已加鎖,state為0表示未加鎖;
讀寫鎖,state的高16位存儲讀的次數(shù),本文由公從號“彤哥讀源碼”原創(chuàng),低16位存儲寫的次數(shù);
信號量,state存儲許可的次數(shù),被使用一次許可減一,被釋放一次許可加一;
CountDownLatch,state存儲初始次數(shù),countDown()次數(shù)減一,當次數(shù)減為0的時候await()被激活;
回環(huán)柵欄,基于ReentrantLock實現(xiàn),相當于在CountDownLatch的基礎(chǔ)上加了“代”的概念,保證可重復(fù)使用;
Phaser,state的高32位存儲當前階段phase,中16位存儲當前階段參與者(任務(wù))的數(shù)量parties,低16位存儲未完成參與者的數(shù)量unarrived,每個階段的參與者都可以控制,相對于回環(huán)柵欄更靈活;
mysql分布式鎖,基于數(shù)據(jù)庫的get_lock()/release_lock()對共享變量進行控制;
zookeeper分布式鎖,基于有序臨時節(jié)點對共享變量進行控制;
redis分布式鎖,基于內(nèi)存鍵值對對共享變量進行控制;
總結(jié)下來,所有同步器的關(guān)鍵因素只有一個——共享變量,只要能夠?qū)蚕碜兞窟M行精確的控制,就能實現(xiàn)同步,以后出現(xiàn)新的組件我們一樣可以根據(jù)這條原理使用新的組件來實現(xiàn)分布式同步器。
下一個系列我們將學(xué)習(xí)線程(池)相關(guān)的知識點,敬請期待!
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。
當前文章:死磕java同步系列之終結(jié)篇-創(chuàng)新互聯(lián)
文章鏈接:http://jinyejixie.com/article38/deohpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、定制網(wǎng)站、搜索引擎優(yōu)化、網(wǎng)站內(nèi)鏈、網(wǎng)站收錄、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容