JAVA多線程(四)Java多線程之join等待結束

1.JAVA多線程(四)Java多線程之join等待結束

1.1 join(等待結束)

  join()方法的作用,是等待這個線程結束;

也就是說,thread.join()方法阻塞調用此方法的線程(calling thread)進入 TIMED_WAITING 狀態,直到線程thread完成,此線程再繼續;
通常用於在main()主線程內,等待其它線程完成再結束main()主線程。

package com.yuanxw.chapter4;

public class ThreadJoin {
    public static void main(String[] args) throws InterruptedException {
        long startTime = System.currentTimeMillis();
        Thread thread1 = new Thread(new SyncDatabase("T1","192.168.185.26",1000L));
        Thread thread2 = new Thread(new SyncDatabase("T2","192.168.185.27",1500L));
        Thread thread3 = new Thread(new SyncDatabase("T3","192.168.185.28",2500L));

        thread1.start();
        thread2.start();
        thread3.start();

        // 等待【thread1、thread2、thread3】對象線程死亡(結束)
        thread1.join();
        thread2.join();
        thread3.join();

        long endTime = System.currentTimeMillis();
        System.out.println(String.format("所有服務器數據同步完成,共耗時【%s】毫秒",endTime - startTime ));
    }
}

/**
 * 同步數據庫數據
 */
class SyncDatabase implements Runnable{
    /** 同步服務器名稱 **/
    private String serviceName;
    /** 同步服務IP地址 **/
    private String ipAddr;
    /** 同步時間 **/
    private long syncTime;

    public SyncDatabase(String serviceName, String ipAddr, long syncTime) {
        this.serviceName = serviceName;
        this.ipAddr = ipAddr;
        this.syncTime = syncTime;
    }

    @Override
    public void run() {
        try {
            Thread.sleep(syncTime);
            System.out.println(String.format("同步【%s】服務器,IP地址【%s】,數據同步完成,共耗時【%s】毫秒", serviceName,ipAddr,syncTime));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

執行結果:

同步【T1】服務器,IP地址【192.168.185.26】,數據同步完成,共耗時【1000】毫秒
同步【T2】服務器,IP地址【192.168.185.27】,數據同步完成,共耗時【1500】毫秒
同步【T3】服務器,IP地址【192.168.185.28】,數據同步完成,共耗時【2500】毫秒
所有服務器數據同步完成,共耗時【2502】毫秒

    – 以上爲《JAVA多線程(四)Java多線程之join等待結束》,如有不當之處請指出,我後續逐步完善更正,大家共同提高。謝謝大家對我的關注。

——厚積薄發(yuanxw)

發佈了125 篇原創文章 · 獲贊 166 · 訪問量 47萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章