等待线程的终结

在某些情况下,我们需要等待线程的终结。例如,我们可能会遇到程序在执行前需要初始化资源。在执行剩下的代码之前,我们需要等待线程完成初始化任务。为达此目的, 我们使用Thread 类的join() 方法。当前线程调用某个线程的这个方法时,它会暂停当前线程,直到被调用线程执行完成。

DataSourcesLoader.java

public class DataSourcesLoader implements Runnable {

    @Override
    public void run() {
        System.out.println("DataSourcesLoader.run start");

        try {
            TimeUnit.SECONDS.sleep(5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("DataSourcesLoader.run end");
    }
}

NetworkConnectionsLoader.java
public class NetworkConnectionsLoader implements Runnable {

    @Override
    public void run() {
        System.out.println("NetworkConnectionsLoader.run start");

        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("NetworkConnectionsLoader.run end");
    }
}

 Test.java

public class Test {
    public static void main(String[] args) {
        Thread thread1 = new Thread(new DataSourcesLoader());
        Thread thread2 = new Thread(new NetworkConnectionsLoader());

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

        try {
            thread1.join();
            thread2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Test.main");
    }
}

  打印结果

DataSourcesLoader.run start
NetworkConnectionsLoader.run start
NetworkConnectionsLoader.run end
DataSourcesLoader.run end
Test.main

Process finished with exit code 0

  







posted on 2017-09-19 15:09  小小程序员的梦想  阅读(161)  评论(0编辑  收藏  举报

导航