线程让步机制详解与多线程性能优化实践
时间:2026-08-15 | 作者:电竞小硕 | 阅读:0线程让步与 yield() 方法
在校园里,经常能看到一群同学一起打篮球。球一旦被某个同学抢到,通常会先在手里运几下,然后再传给别人,接着大家又重新开始抢球。
这个过程,和程序里的线程让步其实很像。
在线程处理中,让步可以通过 yield() 方法来完成。它和 sleep(long millis) 方法有点相似,都会让当前正在运行的线程先停一停。
但关键区别在于,yield()方法并不会阻塞线程。它只是把线程从运行状态切回就绪状态,让系统调度器重新做一次调度。
也就是说,当某个线程调用 yield() 方法后,那些与它优先级相同、或者优先级更高的线程,就有机会先拿到执行权。
下面通过一个案例,具体看一下 yield() 方法该怎么用,如文件1所示。
文件1 Example09.ja va
1 // 定义YieldThread类继承Thread类
2 class YieldThread extends Thread {
3 // 定义一个有参的构造方法
4 public YieldThread(String name) {
5 super(name); // 调用父类的构造方法
6 }
7 public void run() {
8 for (int i = 0; i < 5; i++) {
9 System.out.println(Thread.currentThread().getName()+"---"+i);
10 if (i == 2) {
11 System.out.print("线程让步:");
12 Thread.yield(); // 线程运行到此,作出让步
13 }
14 }
15 }
16 }
17 public class Example09 {
18 public static void main(String[] args) {
19 // 创建两个线程
20 Thread thread1 = new YieldThread("thread1");
21 Thread thread2 = new YieldThread("thread2");
22 // 开启两个线程
23 thread1.start();
24 thread2.start();
25 }
26 }
运行结果如图1所示。
图1 运行结果
案例说明
在文件1里,一共创建了两个线程:thread1 和 thread2,而且它们的优先级是一样的。
两个线程都在循环变量 i 等于 2 时调用了 Thread 的 yield() 方法。也就是主动把当前执行机会让出来,让双方重新去争夺 CPU 的使用权。
从运行结果也能看出来,thread1 输出 2 之后会先让一步,于是执行权切换到 thread2。
同样,thread2 输出 2 之后也会让出执行机会,接着由 thread1 获得执行权。
小提示
通过 yield() 方法可以实现线程让步,让当前正在运行的线程失去CPU使用权,让系统的调度器重新调度一次。
由于Ja va虚拟机默认采用抢占式调度模型,所有线程都会再次抢占CUP资源使用权,所以在执行线程让步后,并不能保证立即执行其他线程。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- 迅捷路由器怎么调信号最强,设置时要注意什么?
- 时间: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
