1. <optgroup id="o3fot"></optgroup>
    <big id="o3fot"></big>
  2. <label id="o3fot"></label>
  3. 教育行業A股IPO第一股(股票代碼 003032)

    全國咨詢/投訴熱線:400-618-4000

    join()方法實現線程插隊

    更新時間:2022年03月02日17時41分 來源:傳智教育 瀏覽次數:

    現實生活中經常能碰到“插隊”的情況,同樣,在Thread 類中也提供了一個join()方法來實現這個“功能”。當在某個線程中調用其他線程的join()方法時,調用的線程將被阻塞,直到被join()方法加入的線程執行完成后它才會繼續運行。接下來通過一個案例來演示join()方法的使用,如下所示。

    class EmergencyThread implements Runnable {
        public void run() {
            for (int i = 1; i < 6; i++) {
                System.out.println(Thread.currentThread().getName()
                 + "輸入:”+i);
                }
            }
        }
        public class Examplel0 {
            public static void main(String[] args) throws InterruptedException {
                //創建線程
                Thread threadl = new Thread(new EmergencyThread(), "threadl");
                threadl.start(); //開啟線程
                for (inc i = 1; i < 6; i++) {
                    System.out.println(Thread.currentThread().getName() + ”輸入:” + i);
                        if (i == 2) {
                            threadl.join(); //調用join()方法
                        }
                    }
                }
            }
    運行結果如圖所示。

    例10-10中,在main線程中開啟了一個線程thread1,這兩個線程會相互爭奪CPU使用權輸出語句。當main線程中的循環變量為2時,調用thread1線程的join()方法,這時,thread1線程就會“插隊”優先執行,并且整個程序執行完畢后才會執行其他線程。從運行結果可以看出,當main線程輸出2以后,thread1線程就開始執行,直到執行完畢,main線程才繼續執行。

    Thread類中除了提供一個無參數的線程插隊join()方法外,還提供了帶有時間參數的線程插隊方法join(long millis)。當執行帶有時間參數的join(long millis)進行線程插隊時,必須等待插入的線程指定時間過后才會繼續執行其他線程。






    猜你喜歡:

    什么是線程讓步?

    什么是線程安全?如何理解線程安全?

    怎樣保障多線程同步數據的安全?

    Java線程優先級:Thread類的優先級常量

    傳智教育Java高級軟件工程師培訓

    0 分享到: