java的幾種執行緒同步工具

2021-07-14 19:51:22 字數 1847 閱讀 9199

1. 通常用於限制可以訪問某些資源(物理或邏輯的)的執行緒數目

2. 呼叫 acquire() 時無法保持同步鎖,因為這會阻止將項返回到執行緒池中。

3. 將訊號量初始化為 1,使得它在使用時最多只有乙個可用的許可,從而可用作乙個相互排斥的鎖。這通常也稱為二進位制訊號量,

4. 此類的構造方法可選地接受乙個公平 引數

5. 主要方法:

1. acquire()  從此訊號量獲取乙個許可,在提供乙個許可前一直將執行緒阻塞,否則執行緒被中斷。

2. release()  釋放乙個許可,將其返回給訊號量。

6. 例如:

try catch (interruptedexception e)

1. 乙個同步輔助類,它允許一組執行緒互相等待,直到到達某個公共屏障點 (common barrier point)。在涉及一組固定大小的執行緒的程式中,這些執行緒必須不時地互相等待,此時 cyclicbarrier 很有用。

2. cyclicbarrier 支援乙個可選的 runnable 命令,在一組執行緒中的最後乙個執行緒到達之後(但在釋放所有執行緒之前),該命令只在每個屏障點執行一次。

若在繼續所有參與執行緒之前更新共享狀態,此屏障操作 很有用。

3. 構造方法:

cyclicbarrier(int parties) 

cyclicbarrier(int parties, runnable barrieraction) 

4. 主要方法:

1. int await()  在所有參與者都已經在此 barrier 上呼叫 await 方法之前,將一直等待。 

2. int getnumberwaiting()  返回當前在屏障處等待的參與者數目。

1. 在完成一組正在其他執行緒中執行的操作之前,它允許乙個或多個執行緒一直等待。 

2. 呼叫了 countdown() 方法,所以在當前計數到達零之前,await 方法會一直受阻塞。

3. 之後,會釋放所有等待的執行緒,await 的所有後續呼叫都將立即返回。這種現象只出現一次——計數無法被重置。

4. 它不要求呼叫 countdown 方法的執行緒等到計數到達零時才繼續,而在所有執行緒都能通過之前,它只是阻止任何執行緒繼續通過乙個 await。

5. 主要方法:

1. await()  使當前執行緒在鎖存器倒計數至零之前一直等待,除非執行緒被中斷。

2. countdown()  遞減鎖存器的計數,如果計數到達零,則釋放所有等待的執行緒。

3. getcount()  返回當前計數。

1. 可以在對中對元素進行配對和交換的執行緒的同步點。

2. 主要方法:

1. exchange(v x)  等待另乙個執行緒到達此交換點(除非當前執行緒被中斷),然後將給定的物件傳送給該執行緒,並接收該執行緒的物件。

3. 示例:

@override

public void run() catch (interruptedexception e)

}

1. 實現類:arrayblockingqueue, delayqueue, linkedblockingdeque, linkedblockingqueue, priorityblockingqueue, synchronousqueue 

2. 主要方法:

丟擲異常 特殊值 阻塞 超時

插入 add(e) offer(e) put(e) offer(e, time, unit) 

移除 remove() poll() take() poll(time, unit) 

檢查 element() peek() 不可用 不可用

java 執行緒 執行緒同步

threadlocal與其它同步機制的比較 threadlocal和其他所有的同步機制都是為了解決多執行緒中的對同一變數的訪問衝突。在普通的同步機制中,是通過對物件加鎖來實現多個執行緒對同一變數的安全訪問的。這時該變數是多個執行緒共享的,使用這種同步機制需要很細緻的分析在什麼時候對變數進行讀寫,什麼...

執行緒同步的幾種方式

程序中線程同步的四種常用方式 一 臨界區 ccriticalsection 當多個執行緒訪問乙個獨占性共享資源時,可以使用臨界區物件。擁有臨界區的執行緒可以訪問被保護起來的資源或 段,其他執行緒若想訪問,則被掛起,直到擁有臨界區的執行緒放棄臨界區為止。具體應用方式 1 定義臨界區物件ccritica...

執行緒同步的幾種方式

程序中線程同步的四種常用方式 1 臨界區 ccriticalsection 當多個執行緒訪問乙個獨占性共享資源時,可以使用臨界區物件。擁有臨界區的執行緒可以訪問被保護起來的資源或 段,其他執行緒若想訪問,則被掛起,直到擁有臨界區的執行緒放棄臨界區為止。具體應用方式 1 定義臨界區物件ccritica...