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