Java高併發程式設計之CountDownLatch

2021-08-31 13:52:15 字數 775 閱讀 6544

儘管這是挺好的解決辦法,當絕對談不上最佳,本篇文章進一步講解更優的解決方案。

使用latch(門閂)替代wait、notify來進行通知,其好處是通訊方式簡單,同時也可以指定等待時間。

countdownlatch不涉及鎖定,當count的值為零的時候當前執行緒繼續執行。

當不涉及同步,只是涉及執行緒通訊的時候,用synchronized + wait/notify顯得太重了,這是應用考慮countdownlatch。

**如下:

public class mycontainer3 

public integer size()

public static void main(string args) catch (exception e)

}system.out.println("thread 2 end.");

}, "t2").start();

new thread(()->

thread.sleep(1000);

}} catch (exception e)

}, "t1").start();

}}

在上面**中,t2執行緒先啟動,判斷容器size不為5的時候,呼叫countdownlatch的await,開始等待;t1執行緒啟動後,for迴圈每秒往容器中新增乙個元素,當容器中元素個數為5的時候,呼叫countdownlatch的countdown方法,此時count值減為0,t1執行緒繼續執行,而t2執行緒不受影響。這個過程中,沒有加鎖,也沒有釋放鎖,通訊過程非常簡單。

實戰Java高併發程式設計之概念

學習高併發你必須知道的幾個重要的概念 1.同步 synchronous 和非同步 asynchronous 同步和非同步是對方法的呼叫而言的 同步呼叫時,會等待呼叫的方法完成以後才能繼續執行這個方法。非同步呼叫的時候會瞬間的返回,但是並不是表示這個請求已經完成了,但是會在後台起乙個執行緒去執行接下來...

java高併發程式設計之深入理解Thread建構函式

2.1 執行緒的命名 構造中含有string name引數的就表示執行緒的名字。還可以呼叫thread 類的setname 方法重新命名 2.2 執行緒的父子關係 thread的所有建構函式,最終都會去呼叫乙個靜態方法init.private void init threadgroup g,runn...

java併發程式設計之Exchanger

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