Java併發程式設計之CyclicBarrier

2021-09-19 09:03:36 字數 831 閱讀 8186

cyclicbarrier執行一組執行緒相互等待,直到到達某個公共的屏障點。

它是通過計數器來實現的,當某個執行緒呼叫了await()方法後,該執行緒就進入了等待狀態,計數器執行加1操作,當計數器的值達到了設定的初始值的時候,呼叫await()進入等待狀態的執行緒會被喚醒,繼續執行他們後續的操作。由於cyclicbarrier在釋放等待執行緒後可以重用,所以我們又稱它為迴圈屏障。

public

class

testcyclicbarrier})

;}pool.

shutdown()

;}private

static

void

race

(int threadnum)

catch

(interruptedexception e)

catch

(brokenbarrierexception e)

}}

上面的例子可以看出任務 0-4 全都執行完ready之後,再一起執行continue。

任務 5-9 全都執行完ready之後,再一起執行continue。即將5個執行緒作為一組,當5個執行緒都到達指定屏障後,所有任務才會被喚醒繼續執行。

在宣告cyclicbarrier的時候,還可以指定runnable表明當執行緒達到指定屏障後,優先執行runnable。

private

static cyclicbarrier cyclicbarrier=

newcyclicbarrier(5

,new

runnable()

});

java併發程式設計之Exchanger

exchanger v 可以交換的物件型別 可以在對中對元素進行配對和交換的執行緒的同步點。每個執行緒將條目上的某個方法呈現給 exchange 方法,與夥伴執行緒進行匹配,並且在返回時接收其夥伴的物件。exchanger 可能被視為 synchronousqueue 的雙向形式。exchanger...

java併發程式設計之Synchronized關鍵字

1.synchronized關鍵字使用前介紹 1 使用synchronized關鍵字修飾方法,ps 在這裡要特別需要注意的是,當有兩個或者以上執行緒的時候,其中有乙個執行緒獲取了該方法的物件鎖執行同步方法的時候,其他的執行緒仍然可以訪問其他的非使用synchronized的方法,也就是非同步的了。2...

java併發程式設計之synchronized

上篇部落格沒寫好,排版改了好多次,看著實在頭疼所以就沒準備往下寫了,今天講下同步使用到的關鍵字synchronized,這個關鍵字可以是用在方法上,也可以使用再 塊上,synchronized作用在方法上,它的鎖物件是當前例項物件 public class syncthreadtest implem...