线程,yield()

一、定义:暂停当前正在执行的线程对象,并执行其他线程

yield()应该做的是让当前运行线程回到可运行状态,以允许具有相同优先级的其他线程获得运行机会。
因此,使用yield()的目的是让相同优先级的线程之间能适当的轮转执行。
但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中

yield()将导致线程从运行状态转到可运行状态,但有可能没有效果

二、例子

                           class ThreadYield extends Thread{
                            public ThreadYield(String name) {
                                super(name);
                            }
                         
                            @Override
                            public void run() {
                                for (int i = 1; i <= 50; i++) {
                                    System.out.println("" + this.getName() + "-----" + i);
                                    // 当i为30时,该线程就会把CPU时间让掉,让其他或者自己的线程执行(也就是谁先抢到谁执行)
                                    if (i ==30) {
                                        this.yield();
                                    }
                                }
                        	
                        }
                        }
                         
                        public class Main {
                         
                        	public static void main(String[] args) {
                        		
                        		ThreadYield yt1 = new ThreadYield("张三");
                            	ThreadYield yt2 = new ThreadYield("李四");
                                yt1.start();
                                yt2.start();
                        	}
                         
                        }

          运行结果:

                  第一种情况:李四(线程)当执行到30时会CPU时间让掉,这时张三(线程)抢到CPU时间并执行。

                  第二种情况:李四(线程)当执行到30时会CPU时间让掉,这时李四(线程)抢到CPU时间并执行。
posted @   jock_javaEE  阅读(131)  评论(0编辑  收藏  举报
编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· 赶AI大潮:在VSCode中使用DeepSeek及近百种模型的极简方法
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
历史上的今天:
2020-12-05 ShardingJdbc学习笔记
点击右上角即可分享
微信分享提示