如果没有经过特殊处理,线程和线程之间是并行运行的,如何让它们串行执行呢?
(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()
原创
©著作权归作者所有:来自51CTO博客作者flushdb的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:先后有序的wait和notify

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Netty使用CompletableFuture实现异步串行队列
Netty使用CompletableFuture解决异步串行化保存数据
Netty CompletableFuture -
Java 线程池 ThreadPoolExecutor
记录线程池的使用
线程池 java ide -
JAVA 事务 串行化 java可串行化接口
一、 串行化的定义 1. 什么是串行化 对象的寿命通常随着生成该对象的 程序 的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的 能力 ,叫做对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己,这个过程叫对象的串
JAVA 事务 串行化 serialization java string thread