等待线程的终结
在某些情况下,我们需要等待线程的终结。例如,我们可能会遇到程序在执行前需要初始化资源。在执行剩下的代码之前,我们需要等待线程完成初始化任务。为达此目的, 我们使用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
浙公网安备 33010602011771号