從本課開(kāi)始學(xué)習(xí)并發(fā)編程的內(nèi)容。主要介紹并發(fā)編程的基礎(chǔ)知識(shí)、鎖、內(nèi)存模型、線程池、各種并發(fā)容器的使用。
成都創(chuàng)新互聯(lián)公司擁有10余年的建站服務(wù)經(jīng)驗(yàn),在此期間,我們發(fā)現(xiàn)較多的客戶在挑選建站服務(wù)商前都非常的猶豫。主要問(wèn)題集中:在無(wú)法預(yù)知自己的網(wǎng)站呈現(xiàn)的效果是什么樣的?也無(wú)法判斷選擇的服務(wù)商設(shè)計(jì)出來(lái)的網(wǎng)頁(yè)效果自己是否會(huì)滿意?成都創(chuàng)新互聯(lián)公司業(yè)務(wù)涵蓋了互聯(lián)網(wǎng)平臺(tái)網(wǎng)站建設(shè)、移動(dòng)平臺(tái)網(wǎng)站制作、網(wǎng)絡(luò)推廣、按需網(wǎng)站策劃等服務(wù)。成都創(chuàng)新互聯(lián)公司網(wǎng)站開(kāi)發(fā)公司本著不拘一格的網(wǎng)站視覺(jué)設(shè)計(jì)和網(wǎng)站開(kāi)發(fā)技術(shù)相結(jié)合,為企業(yè)做網(wǎng)站提供成熟的網(wǎng)站設(shè)計(jì)方案。
并發(fā)編程
線程通信
AQS
ReadWriteLock
Lock
在同步組件的實(shí)現(xiàn)過(guò)程中,AQS是核心部分,通過(guò)使用AQS的模板方法來(lái)實(shí)現(xiàn)同步語(yǔ)義。AQS包含同步隊(duì)列的定義,以及對(duì)同步隊(duì)列進(jìn)行排隊(duì)、等待通知等來(lái)實(shí)現(xiàn)的獨(dú)占鎖的獲取和釋放;共享鎖的獲取和釋放;可中斷鎖;超時(shí)等待鎖等特性。
volatile int waitState; // 節(jié)點(diǎn)狀態(tài)
volatile Node prev; // 當(dāng)前節(jié)點(diǎn)的上一節(jié)點(diǎn)
volatile Node next; // 當(dāng)前節(jié)點(diǎn)的下一節(jié)點(diǎn)
volatile Thread thread; // Node主體,線程
Node nextWaiter; // 等待隊(duì)列中的下一節(jié)點(diǎn)
其中,節(jié)點(diǎn)狀態(tài)的取值范圍為:
int CANCELLED = 1; // 節(jié)點(diǎn)從隊(duì)列中取消
int INITIAL = 0; // 初始狀態(tài)
int SIGNAL = -1; // 下一節(jié)點(diǎn)處于等待狀態(tài),當(dāng)當(dāng)前線程釋放鎖后會(huì)通知下一節(jié)點(diǎn),使其進(jìn)入執(zhí)行狀態(tài)
int CONDITION = -2; // 當(dāng)前節(jié)點(diǎn)進(jìn)入等待狀態(tài)
int PROPAGATE = -3; // 表示下一次共享狀態(tài)獲取將會(huì)無(wú)條件傳播下去
顯然,同步隊(duì)列是一個(gè)雙向鏈表。
另外,AQS中有兩個(gè)很重要的變量:同步隊(duì)列的頭尾節(jié)點(diǎn)。
private transient volatile Node head;
private transient volatile Node tail;
AQS通過(guò)頭尾指針來(lái)管理同步隊(duì)列,同時(shí)實(shí)現(xiàn)包括獲取鎖失敗的線程進(jìn)入隊(duì)列、釋放鎖時(shí)對(duì)同步隊(duì)列進(jìn)行通知等核心功能。
void acquire(int arg); //獨(dú)占式獲取同步鎖,如果獲取失敗則插入同步隊(duì)列進(jìn)行等待
void acquireInterruptibly(int arg); //與acquire相同,但在同步隊(duì)列等待過(guò)程中可響應(yīng)中斷
boolean tryAcquireNanos(int arg, long nanos); //在acquireInterruptibly的基礎(chǔ)上增加了超時(shí)等待的功能,在超時(shí)時(shí)間內(nèi)沒(méi)有獲取到同步鎖則返回false
boolean release(int arg); //釋放鎖,該方法會(huì)喚醒同步隊(duì)列中的下一個(gè)節(jié)點(diǎn)
void acquireShared(int arg); //共享式獲取同步鎖,與獨(dú)占鎖的區(qū)別是同一時(shí)刻可以有多個(gè)線程獲取到同步狀態(tài)
void acquireSharedInterruptibly(int arg); //在acquireShared基礎(chǔ)上增加了響應(yīng)中斷的功能
boolean tryAcquireSharedNanos(int arg, long nanos); //在acquireSharedInterruptibly的基礎(chǔ)上增加了超時(shí)等待的功能
boolean releaseShared(int arg); //釋放共享式鎖
網(wǎng)站題目:掌握系列之并發(fā)編程-5.AQS和ReadWriteLock
路徑分享:http://aaarwkj.com/article32/psoipc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)公司、用戶體驗(yàn)、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)