线程并行执行转为串行的法宝 join()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程并行执行转为串行的法宝 join()相关的知识,希望对你有一定的参考价值。
如果没有经过特殊处理,线程和线程之间是并行运行的,如何让它们串行执行呢?
(1)一种是使用无参的join(),等到另一个线程执行完毕再继续运行;
(2)一种是使用带参的join(long millis) ,等待一定的时间后,无论另一个线程是否执行完毕,都继续执行。
public class Thread1 extends Thread {
@Override
public void run() {
System.out.println("线程Thread1开始执行");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程Thread1执行完毕");
}
}
public class Thread2 extends Thread {
private Thread1 thread1;
public Thread2(Thread1 thread1) {
this.thread1 = thread1;
}
@Override
public void run() {
try {
// 时间超过了1000ms,则放弃等待,继续执行
thread1.join(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程Thread2开始执行");
System.out.println("线程Thread2执行完毕");
}
public static void main(String[] args) {
Thread1 t1 = new Thread1();
Thread2 t2 = new Thread2(t1);
t1.start();
t2.start();
}
}
以上是关于线程并行执行转为串行的法宝 join()的主要内容,如果未能解决你的问题,请参考以下文章