1.线程等待 join()
有时,我们需要等待一个线程完成它的工作后,才能进行自己的下一步工作。
public class JoinTest {
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();
//当前线程(代码行所在线程:JavaMain)阻塞等待,直到 thread 线程执行完毕
//thread.join();
//当前线程(代码行所在线程:JavaMain)阻塞等待,直到 thread 线程执行完毕,或者给定时间已经到了(两者的最小值)
thread.join(300000);
System.out.println("main");
}
}
2.线程休眠 sleep()
因为线程的调度是不可控的,所以,这个方法只能保证休眠时间是大于
等于休眠时间的。注意此方法是一个静态方法。
public class ThreadDemo {
public static void main(String[] args) throws InterruptedException {
System.out.println(System.currentTimeMillis());
Thread.sleep(3 * 1000);
System.out.println(System.currentTimeMillis());
}
}