如何让多个线程按顺序执行?
发布于: 2021 年 01 月 10 日
(一)每天一个知识点
如何让多个线程按顺序执行?
(二)结论
1.主线程中使用 join
2.子线程中使用 join
3.使用单一化线程池
(三)再多学一点
我们都知道线程的执行顺序是无序的,但是有的时候我们希望线程按顺序执行该怎么做呢?我在下面提供了三种方式:
1.主线程中使用 join
public static void main(String[] args) throws InterruptedException {
Thread a1=new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"打开冰箱");
}
});
Thread a2=new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"取出物品");
}
});
Thread a3=new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"关闭冰箱");
}
});
a1.start();
a1.join();
a2.start();
a2.join();
a3.start();
a3.join();
}
复制代码
2.子线程中使用 join
public static void main(String[] args) throws InterruptedException {
Thread a1=new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"打开冰箱");
}
});
Thread a2=new Thread(new Runnable() {
@Override
public void run() {
try {
a1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"取出物品");
}
});
Thread a3=new Thread(new Runnable() {
@Override
public void run() {
try {
a2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"关闭冰箱");
}
});
a1.start();
a2.start();
a3.start();
}
复制代码
3.使用单一化线程池,单一化线程池一次只提供一个线程,相当于单线程的操作。
static ExecutorService service= Executors.newSingleThreadExecutor();
public static void main(String[] args) {
Thread a1=new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"打开冰箱");
}
});
Thread a2=new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"取出物品");
}
});
Thread a3=new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"关闭冰箱");
}
});
service.submit(a1);
service.submit(a2);
service.submit(a3);
}
复制代码
划线
评论
复制
发布于: 2021 年 01 月 10 日阅读数: 24
版权声明: 本文为 InfoQ 作者【Java鱼仔】的原创文章。
原文链接:【http://xie.infoq.cn/article/6efe1503d71708e8284f202d3】。文章转载请联系作者。
Java鱼仔
关注
你会累是因为你在走上坡路 2020.12.26 加入
微信搜索《Java鱼仔》
评论