Java中join線程操作實例分析
本文實例講述了Java中join線程操作。分享給大家供大家參考,具體如下:
一 點睛
Tread提供了讓一個線程等待另外一個線程完成的方法——join()方法。當在某個程序執(zhí)行流中調(diào)用其他線程的join()方法時,調(diào)用線程將被阻塞,直到被join()方法加入的join線程執(zhí)行完后為止。
join()方法通常由使用線程的程序調(diào)用,以將大問題劃分成許多小問題,每個小問題分配一個線程。當所有小問題都得到處理后,再調(diào)用主線程來進一步操作。
二 代碼
public class JoinThread extends Thread
{
// 提供一個有參數(shù)的構(gòu)造器,用于設(shè)置該線程的名字
public JoinThread(String name)
{
super(name);
}
// 重寫run()方法,定義線程執(zhí)行體
public void run()
{
for (int i = 0; i < 100 ; i++ )
{
System.out.println(getName() + " " + i);
}
}
public static void main(String[] args)throws Exception
{
// 啟動子線程
new JoinThread("新線程").start();
for (int i = 0; i < 100 ; i++ )
{
if (i == 20)
{
JoinThread jt = new JoinThread("被Join的線程");
jt.start();
// main線程調(diào)用了jt線程的join()方法,main線程
// 必須等jt執(zhí)行結(jié)束才會向下執(zhí)行
jt.join();
}
System.out.println(Thread.currentThread().getName()
+ " " + i);
}
}
}
三 運行結(jié)果
main 0
main 1
main 2
main 3
main 4
main 5
main 6
新線程 0
......
新線程 11
新線程 12
新線程 13
main 7
main 8
......
main 16
main 17
新線程 14
main 18
main 19
新線程 15
新線程 16
......
新線程 31
被Join的線程 0
新線程 32
被Join的線程 1
新線程 33
被Join的線程 2
新線程 34
被Join的線程 3
新線程 35
新線程 36
新線程 37
新線程 38
新線程 39
被Join的線程 4
被Join的線程 5
......
被Join的線程 13
被Join的線程 14
新線程 40
被Join的線程 15
被Join的線程 16
被Join的線程 17
新線程 41
新線程 42
被Join的線程 18
被Join的線程 19
......
被Join的線程 38
被Join的線程 39
新線程 43
新線程 44
新線程 45
被Join的線程 40
被Join的線程 41
被Join的線程 42
被Join的線程 43
新線程 46
新線程 47
新線程 48
......
新線程 60
新線程 61
被Join的線程 44
......
被Join的線程 98
被Join的線程 99
新線程 62
新線程 63
......
新線程 98
新線程 99
main 20
main 21
main 22
main 23
四 說明
1 程序開始是mian線程和新線程并發(fā)執(zhí)行。
2 當i為20時,main線程開始等待“被Join的線程”執(zhí)行完成,此時“被Join的線程”和“新線程”并發(fā)執(zhí)行。
3 當“被Join的線程”執(zhí)行完成,main線程繼續(xù)運行,此時“main”和“新線程”并發(fā)執(zhí)行。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java進程與線程操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
使用Filter攔截器如何實現(xiàn)請求跨域轉(zhuǎn)發(fā)
這篇文章主要介紹了使用Filter攔截器如何實現(xiàn)請求跨域轉(zhuǎn)發(fā),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
Java框架Quartz中API、Jobs和Trigger詳解
這篇文章主要介紹了Java框架Quartz中API、Jobs和Trigger詳解,JobDetail?對象是在將?job?加入?scheduler?時,由客戶端程序(你的程序)創(chuàng)建的,它包含?job?的各種屬性設(shè)置,以及用于存儲?job?實例狀態(tài)信息的?JobDataMap,需要的朋友可以參考下2023-11-11
idea如何解決commit代碼時一直code Analyze加載的問題
解決nacos報錯java.lang.ClassNotFoundException: com.netflix.
idea debug沒有force step into的問題解決

