溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java順序執(zhí)行線程的方法

發(fā)布時間:2020-06-24 11:46:40 來源:億速云 閱讀:188 作者:Leah 欄目:編程語言

這篇文章運用簡單易懂的例子給大家介紹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é)果:

java順序執(zhí)行線程的方法

使用主線程的 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é)果:

java順序執(zhí)行線程的方法

關(guān)于java順序執(zhí)行線程的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI