死磕併發之CountDownLatch的使用

2021-10-05 08:44:41 字數 1687 閱讀 3788

join

thread.join()方法使執行緒等待,待執行緒退出時,呼叫thread.join()的主線程會被喚醒,從而執行後續操作。當處於執行緒池的狀態下,執行緒不會退出,join就會一直執行不到。

public

class

threadjoindemo

catch

(exception e)

system.out.

println

("child thread running");

}}public

static

void

main

(string[

] args)

throws exception

}

public

class

threadjoindemo

catch

(exception e)

system.out.

println

("child thread running");

}}public

static

void

main

(string[

] args)

throws exception

countdownlatch

countdownlatch方法

//建構函式 count為計數器

public

countdownlatch

(int count)

//呼叫await()方法的執行緒會被掛起,它會等待直到count值為0才繼續執行

public

void

await()

throws interruptedexception

//和await()類似,只不過等待一定的時間後count值還沒變為0的話就會繼續執行

public

boolean

await

(long timeout, timeunit unit)

throws interruptedexception

//將count值減1

public

void

countdown()

countdownlatch即可解決上述join問題。 如下示例,會優先輸出 child thread running,然後輸出 「主線程執行結束」

public

class

countdownlatchdemo

catch

(exception e)

system.out.

println

("child thread running");

countdownlatch.

countdown()

;}})

; countdownlatch.

await()

; system.out.

println

("主線程執行緒執行結束");

}}

死磕mysql 死磕mysql

資料庫建立語句 create database new 建立乙個名為new 的資料庫 drop database new 刪除名為new的資料庫 資料庫名為小寫,當初教我的那個人對我說在某個系統中大寫會出現異常情況,為了方便移植,統一為小寫 show creata database new 檢視建立...

死磕演算法之選擇排序

假如我們現在要排序的陣列為 3,1,0,2,8,4,2 那麼選擇排序的排序流程為 在這個陣列中找出最小值與第乙個元素交換,現在陣列為 0,1,3,2,8,4,2 在這個陣列中除了第乙個位置的元素外找出最小值與第二個元素交換,因為第二個元素就是最小的所以此次沒有發生變化。現在陣列為 0,1,3,2,8...

死磕演算法之堆排序

堆排序主要是運用了二叉樹的性質來進行的排序。在進行堆排序之前我們先了解一下二叉樹的幾個性質 1.在排序使用二叉樹的時候我們要排序的陣列的第0個位置其實是不可以用的,這個時候如果我們要排序的陣列為 3,1,0,2,8,4,2 時,我們首先要把它變為 0,3,1,0,2,8,4,2 我們把他轉換為二叉樹...