线程休眠原因及解决方法详解
时间:2026-08-15 | 作者:穿越地图的猫 | 阅读:0线程休眠方法 sleep()
前面已经提到过线程优先级:优先级高的线程,通常拿到先执行机会的概率更大;优先级低的线程,则可能排在后面。
如果希望人为干预线程的执行节奏,让当前正在运行的线程先停一停,把 CPU 的使用权让给其他线程,这时候就可以用静态方法sleep(long millis)。
这个方法会让当前线程暂停一段时间,进入休眠等待状态,于是其他线程就有机会获得执行。
需要注意的是,sleep(long millis)方法会声明抛出InterruptedException异常,所以调用它时,要么捕获这个异常,要么继续声明抛出。
sleep()方法使用示例
接下来通过案例演示一下sleep()方法在程序中的使用,如文件1所示。
文件1 Example08.ja va
1 public class Example08 {
2 public static void main(String[] args) {
3 // 分别定义两个Thread线程对象
4 Thread thread1 = new Thread(() -> {
5 for (int i = 0; i < 10; i++) {
6 System.out.println(Thread.currentThread().getName()
7 + "正在输出i:" + i);
8 if(i ==2){
9 try {
10 // 在该线程执行过程中进入睡眠状态,让其他线程先执行
11 Thread.sleep(500);
12 } catch (InterruptedException e) {
13 e.printStackTrace();
14 }
15 }
16 }
17 });
18 Thread thread2 = new Thread(() -> {
19 for (int j = 0; j < 10; j++) {
20 System.out.println(Thread.currentThread().getName()
21 + "正在输出j:" + j);
22 }
23 });
24 // 开启两个线程
25 thread1.start();
26 thread2.start();
27 }
28 }
运行结果如图1所示。
图1 运行结果
示例分析
文件1中开启了两个线程,同时在thread1线程执行过程中调用了Thread的sleep(500)方法。
它的目的是让一个线程在执行的某一时刻休眠500毫秒,从而使另一个线程获得执行的机会。
正常情况下,这两个线程会争相获取CUP执行权并交互打印输出信息。
从图1可以看出,当thread1执行到i==2时,就会进入休眠状态。
此时可以看到thread2线程一直会获得CUP使用权,直到thread1线程休眠时间消耗完成才有机会获得CUP使用权。
需要注意的问题
有一点很容易被忽略:线程类Thread一共提供了两个休眠方法——sleep(long millis)和sleep(long millis, int nanos)。
这两个方法都明确带有休眠时长参数。
所以,即便其他线程已经全部结束,也不意味着当前处于休眠中的线程会立刻继续执行。
它必须等到休眠时间真正结束之后,才会转入就绪状态。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- 迅捷路由器怎么调信号最强,设置时要注意什么?
- 时间: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
精选合集
更多大家都在玩
大家都在看
更多-
- 以下哪种食材被称为“地下苹果” 蚂蚁庄园今日答案9.18
- 时间:2026-09-17
-
- 蚂蚁庄园今天答题答案2026年9月18日
- 时间:2026-09-17
-
- 蚂蚁庄园答题今日答案2026年9月18日
- 时间:2026-09-17
-
- 蚂蚁庄园小课堂2026年9月18日最新题目答案
- 时间:2026-09-17
-
- 小鸡答题今天的答案是什么2026年9月18日
- 时间:2026-09-17
-
- 蚂蚁庄园每日答题答案2026年9月18日
- 时间:2026-09-17
-
- 蔬菜洗完掉色,说明是被染色了,是真的吗 蚂蚁庄园今日答案9月18日
- 时间:2026-09-17
-
- 满襟蜡绘花纹巧染就花纹当绣裳说的是哪种传统技艺 蚂蚁新村今日答案2026.9.17
- 时间:2026-09-17
