- join()这个方法是插入到父线程之前执行,此时父线程处于WAITING状态,只有当join的插队线程执行完了,父线程才恢复运行状态!对于同一时刻运行的其他线程,join不起到任何作用!
- join(long milliseconds,long nanos):参数指定的时间到达后,唤醒父线程
package mytest;
import java.util.concurrent.TimeUnit;
public class JoinTest {
static class DataSourcesLoader implements Runnable {
@Override
public void run() {
System.out.println("DataSourcesLoader start...");
try {
int i = 0;
while (i++ < 100) {
System.out.println("current thread:" + Thread.currentThread().getName());
}
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("DataSourcesLoader end.");
}
}
static class DataSourcesLoader2 implements Runnable {
@Override
public void run() {
System.out.println("DataSourcesLoader2 start...");
try {
int i = 0;
while (i++ < 100) {
System.out.println("current thread:" + Thread.currentThread().getName());
}
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("DataSourcesLoader2 end.");
}
}
public static void main(String[] args) {
Thread thread = new Thread(new DataSourcesLoader());
thread.start();
Thread thread2 = new Thread(new DataSourcesLoader2());
thread2.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("over");
}
}