java多執行緒 Thead API之join方法

2021-09-24 04:57:46 字數 1236 閱讀 8517

首先給出結論:t.join()方法只會使主線程進入等待池並等待t執行緒執行完畢後才會被喚醒。並不影響同一時刻處在執行狀態的其他執行緒。即在t.join方法之前就啟動的執行緒是不受其影響的,t.join只影響當前主線程的執行

分別啟動a,b執行緒,可以看出a執行緒和b執行緒是交替執行的。

public

class

testjoin

}class

threadtest

extends

thread

@override

public

void

run()}

}

執行結果:

b-1a-

1a-2a-

3b-2a-

4b-3b-

4b-5a-

5

啟動執行緒a,並呼叫執行緒a的join方法,會致使當前的main執行緒進入等待,直到執行緒a結束生命週期,當前main執行緒才會往下繼續執行;

顯然,使用t1.join()之後,main執行緒繼續執行需要等a執行緒執行完畢之後才能執行,執行緒b啟動,b執行緒才會執行。需要注意的是,t1.join()需要等t1.start()執行之後執行才有效果,此外,如果t1.join()放在t2.start()之後的話,仍然會是交替執行

public

class

testjoin2

}

執行結果:

a-1a-

2a-3a-

4a-5b-

1b-2b-

3b-4b-

5

join()方法只會使主線程進入等待池並等待t執行緒執行完畢後才會被喚醒。並不影響同一時刻處在執行狀態的其他執行緒。

這裡的主線程是main執行緒,而t2啟動在t1的join之前,故t2的執行不受t1的join影響;而主線程main需要等t1,t2執行緒執行完畢後才可繼續往下執行

public

class

testjoin3

}}

執行結果

a-1b-

1a-2a-

3b-2a-

4a-5b-

3b-4b-

5main#0

main#1

main#2

main#3

main#4

java多執行緒

在網上看到很有意思的問題,摘下來好好看下 在面試的時候被問了乙個多執行緒的問題 回來仔細思考了一下,多執行緒是否真的能提高了效率?我對多執行緒的理解就是 比如挖乙個隧道,有2種開工方法 1 只在山的一頭挖,直至挖到山的另一頭,從而打通隧道,這可以看成是單執行緒 2 在山的兩頭挖,同時開工,最後在山的...

Java 多執行緒

1。thread類和runnable介面 2。主線程 用thread的static thread currentthread 方法獲得 3。通過實現runnable介面建立執行緒 實現runnable介面的run方法。新執行緒在run 方法返回時結束。注意用這種方法建立程序時,在實現runnable...

JAVA 多執行緒

為hashmap的不正確使用所導致。hashmap在多執行緒環境下使用不安全。使用靜態hashmap作為聯絡人資料快取,key為手機號碼.private static maplxrdata new hashmap 多執行緒環境下不同步hashmap可能導致如下問題 1 多執行緒put操作後可能導致g...