Java中join線程操作實例分析
本文實例講述了Java中join線程操作。分享給大家供大家參考,具體如下:
一 點睛
Tread提供了讓一個線程等待另外一個線程完成的方法——join()方法。當在某個程序執(zhí)行流中調用其他線程的join()方法時,調用線程將被阻塞,直到被join()方法加入的join線程執(zhí)行完后為止。
join()方法通常由使用線程的程序調用,以將大問題劃分成許多小問題,每個小問題分配一個線程。當所有小問題都得到處理后,再調用主線程來進一步操作。
二 代碼
public class JoinThread extends Thread { // 提供一個有參數的構造器,用于設置該線程的名字 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線程調用了jt線程的join()方法,main線程 // 必須等jt執(zhí)行結束才會向下執(zhí)行 jt.join(); } System.out.println(Thread.currentThread().getName() + " " + i); } } }
三 運行結果
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相關內容感興趣的讀者可查看本站專題:《Java進程與線程操作技巧總結》、《Java數據結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
Springboot MDC+logback實現(xiàn)日志追蹤的方法
MDC(Mapped Diagnostic Contexts)映射診斷上下文,該特征是logback提供的一種方便在多線程條件下的記錄日志的功能,這篇文章主要介紹了Springboot MDC+logback實現(xiàn)日志追蹤的方法,需要的朋友可以參考下2024-04-04Spring Data JPA 如何使用QueryDsl查詢并分頁
這篇文章主要介紹了Spring Data JPA 如何使用QueryDsl查詢并分頁,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11解決 java.lang.NoSuchMethodError的錯誤
這篇文章主要介紹了解決 java.lang.NoSuchMethodError的錯誤的相關資料,需要的朋友可以參考下2017-06-06java線程并發(fā)blockingqueue類使用示例
BlockingQueue是一種特殊的Queue,若BlockingQueue是空的,從BlockingQueue取東西的操作將會被阻斷進入等待狀態(tài)直到BlocingkQueue進了新貨才會被喚醒,下面是用BlockingQueue來實現(xiàn)Producer和Consumer的例子2014-01-01解決eclipse中maven引用不到已經存在maven中jar包的問題
這篇文章主要介紹了解決eclipse中maven引用不到已經存在maven中jar包的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10詳解Intellij IDEA中.properties文件中文顯示亂碼問題的解決
這篇文章主要介紹了詳解Intellij IDEA中.properties文件中文顯示亂碼問題的解決,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11