package com.jackson.deng.concurrent.chapter1.five;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
* 线程.join()表示等待该线程执行完成(TERMINATED状态)
*
* @author jackson
*
*/
public class FinishThread {
public class DataSourcesLoader implements Runnable {
@Override
public void run() {
System.out.printf("Begining data sources loading: %s\n", new Date());
try {
TimeUnit.SECONDS.sleep(4);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.printf("Data sources loading has finished: %s\n", new Date());
}
}
public class NetworkConnectionsLoader implements Runnable {
@Override
public void run() {
System.out.printf("Begining network connections loading: %s\n", new Date());
try {
TimeUnit.SECONDS.sleep(6);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.printf("Network connections loading has finished: %s\n", new Date());
}
}
public static void main(String[] args) {
FinishThread ft = new FinishThread();
Thread t1 = new Thread(ft.new DataSourcesLoader());
Thread t2 = new Thread(ft.new NetworkConnectionsLoader());
t1.start();
t2.start();
try {
System.out.println(t1.getState());
System.out.println(t2.getState());
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(t1.getState());
System.out.println(t2.getState());
System.out.println("在线程1和2执行完成之后在执行这个 ");
}
}
运行结果:
RUNNABLE
RUNNABLE
Begining data sources loading: Fri Oct 31 11:39:44 CST 2014
Begining network connections loading: Fri Oct 31 11:39:44 CST 2014
Data sources loading has finished: Fri Oct 31 11:39:48 CST 2014
Network connections loading has finished: Fri Oct 31 11:39:50 CST 2014
TERMINATED
TERMINATED
在线程1和2执行完成之后在执行这个