sync同步器框架

2022-09-22 04:30:10 字數 1407 閱讀 2468

countdownlatch/cyclicbarrier/semaphore使用過嗎?

概念:讓一些執行緒阻塞直到另一些執行緒完成一系列操作才被喚醒

來自:

主要方法:

public class countdownlatchdemo , string.valueof(i)).start();

}countdownlatch.await();

system.out.println(thread.currentthread().getname()+"\t*******班長最後關門走人");

呼叫乙個子執行緒的join()方法後,該執行緒會一直被阻塞直到子執行緒執行完畢

而,countdownlatch則使用計數器來允許子執行緒執行完畢,或者在執行中增減計數

使用執行緒池來管理執行緒時一般都是直接新增runnable 到執行緒池,這時候就沒辦法呼叫執行緒的join()方法了

讓一組執行緒到達乙個屏障(同步點)時被阻塞,直到最後乙個執行緒到達屏障時,屏障才會開門。

可重用該同步器對於數量固定並且互相之間必須不時等待彼此的多執行緒應用很有用

public class cyclicbarrierdemo );

for(int i = 1; i <=7; i++)catch (interruptedexception e)catch (brokenbarrierexception e)

},string.valueof(i)).start();}}

}

允許多個執行緒同時訪問

可公平,非公平構造

目的:

//模擬搶車位

佇列同步器

1 abstractqueuedsynchronizer 頭節點 獲取同步狀態成功的節點 尾節點 執行緒無法獲取到同步狀態,而被構造成節點,加入到同步佇列。加入佇列必須保證執行緒安全 compareandsettail node expect,node update 2 獨佔式同步 1 獲取同步狀態...

佇列同步器的分析

包括 同步佇列,獨佔式同步狀態獲取與釋放 共享式同步狀態獲取與釋放 1.同步佇列 aqs依賴內部的同步佇列 乙個fifo雙向佇列 來完成同步狀態管理。當執行緒獲取同步狀態失敗時,同步器會將當前執行緒和等待狀態等資訊包裝成乙個節點並將其加入同步佇列,同時會阻塞當前執行緒。當同步狀態釋放時,會把首節點中...

抽象佇列同步器AQS

aqs具體實現及內部原理 aqs同步佇列具體實現結構 private volatile int state 共享變數,使用volatile修飾保證執行緒可見性share共享 多個執行緒可同時執行,如reentrantreadwritelock.readlock cyclicbarrier count...