您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹java順序執行線程的方法,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
我們需要完成這樣一個應用場景:
1.早上;2.測試人員、產品經理、開發人員陸續的來公司上班;3.產品經理規劃新需求;4.開發人員開發新需求功能;5.測試人員測試新功能。
規劃需求,開發需求新功能,測試新功能是一個有順序的,我們把thread1看做產品經理,thread2看做開發人員,thread3看做測試人員。
使用線程的 join 方法
join():是Theard的方法,作用是調用線程需等待該join()線程執行完成后,才能繼續用下運行。
應用場景:當一個線程必須等待另一個線程執行完畢才能執行時可以使用join方法。
實例如下:
package com.zhangsf.javabase.thread.order; /** * @author zhangsf * 通過子程序join使線程按順序執行 */ public class ThreadJoinDemo { public static void main(String[] args) { final Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("產品經理規劃新需求"); } }); final Thread thread2 = new Thread(new Runnable() { @Override public void run() { try { thread1.join(); System.out.println("開發人員開發新需求功能"); } catch (InterruptedException e) { e.printStackTrace(); } } }); Thread thread3 = new Thread(new Runnable() { @Override public void run() { try { thread2.join(); System.out.println("測試人員測試新功能"); } catch (InterruptedException e) { e.printStackTrace(); } } }); System.out.println("早上:"); System.out.println("測試人員來上班了..."); thread3.start(); System.out.println("產品經理來上班了..."); thread1.start(); System.out.println("開發人員來上班了..."); thread2.start(); } }
運行結果:
使用主線程的 join 方法
這里是在主線程中使用join()來實現對線程的阻塞。
package com.zhangsf.javabase.thread.order; /** * @author zhangsf * 通過主程序join使線程按順序執行 */ public class ThreadMainJoinDemo { public static void main(String[] args) throws Exception { final Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("產品經理正在規劃新需求..."); } }); final Thread thread2 = new Thread(new Runnable() { @Override public void run() { System.out.println("開發人員開發新需求功能"); } }); final Thread thread3 = new Thread(new Runnable() {zzzz @Override public void run() { System.out.println("測試人員測試新功能"); } }); System.out.println("早上:"); System.out.println("產品經理來上班了"); System.out.println("測試人員來上班了"); System.out.println("開發人員來上班了"); thread1.start(); //在父進程調用子進程的join()方法后,父進程需要等待子進程運行完再繼續運行。 System.out.println("開發人員和測試人員休息會..."); thread1.join(); System.out.println("產品經理新需求規劃完成!"); thread2.start(); System.out.println("測試人員休息會..."); thread2.join(); thread3.start(); } }
運行結果:
關于java順序執行線程的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。