线程插队的原因与处理方法详解
时间:2026-08-15 | 作者:清风无痕 | 阅读:0现实里,“插队”这种事并不少见;放到Thread类里,其实也有一个类似的机制,那就是join()方法。
一个线程里一旦调用了另一个线程的join(),当前这个调用方线程就会先停下来进入阻塞状态。
等被join()进去的那个线程执行完毕之后,它才会恢复并继续往下运行。
下面结合一个案例,具体看看join()方法到底怎么用,示例见文件1。
示例代码
文件1 Example10.ja va
1 class EmergencyThread implements Runnable {
2 public void run() {
3 for (int i = 1; i < 6; i++) {
4 System.out.println(Thread.currentThread().getName()
5 +"输入:"+i);
6 }
7 }
8 }
9 public class Example10 {
10 public static void main(String[] args) throws InterruptedException {
11 // 创建线程
12 Thread thread1 = new Thread(new EmergencyThread(),"thread1");
13 thread1.start(); // 开启线程
14 for (int i = 1; i < 6; i++) {
15 System.out.println(Thread.currentThread().getName()
16 +"输入:"+i);
17 if (i == 2) {
18 thread1.join(); // 调用join()方法
19 }
20 }
21 }
22 }
运行结果如图1所示。
图1 运行结果
运行过程分析
文件1中,在main线程中开启了一个线程thread1。
这两个线程会相互争夺CUP使用权输出语句。
当main线程中的循环变量为2时,调用thread1线程的join()方法。
这时,thread1线程就会“插队”优先执行,并且整个程序执行完毕后才会执行其他线程。
从运行结果可以看出,当main线程输出2以后,thread1线程就开始执行。
直到执行完毕,main线程才继续执行。
join()方法的另一种形式
在Thread类里,除了常见的无参线程插队方法join(),还提供了一个带时间参数的版本:join(long millis)。
这个方法一旦执行,当前线程会先暂停,等被插入的线程运行到指定时间之后,其他线程才会继续往下执行。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- 迅捷路由器怎么调信号最强,设置时要注意什么?
- 时间:2026-08-27
-
- vivo浏览器怎么卸不掉?原因和解决方法在这里
- 时间:2026-08-27
-
- OPPO R11s黑屏了,怎么强制恢复出厂设置?
- 时间:2026-08-27
-
- 飞利浦显示器包装盒有生产日期和保修期吗?怎么看?
- 时间:2026-08-27
-
- 联想新平板开机必须联网吗?怎么做?
- 时间:2026-08-27
-
- 平板横竖屏切换设置与问题解决
- 时间:2026-08-27
-
- 移动电源容量怎么测?要准备哪些工具?
- 时间:2026-08-27
-
- 荣耀90 Pro防水吗?防水级别多少?怎么用才安全
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
