什么是线程让步?

在校园中,经常会看到很多同学一起打篮球,当某个同学抢到篮球后可以拍一会儿再传递给其他人,大家重新开始抢篮球,这个过程就相当于程序中的线程让步。线程让步可以通过yield()方法来实现,该方法和sleep(long millis)方法有点类似,都可以让当前正在运行的线程暂停,区别在于yield()方法不会阻塞该线程,它只是将线程转换成就绪状态,让系统的调度器重新调度一次。当某个线程调用yield()方法之后,与当前线程优先级相同或者更高的线程可以获得执行的机会。接下来通过一个案例来演示yield()方法的使用,如例10-9所示。

例10-9 Example09.java

//定义YieldThread类继承Thread类class YieldThread extends Thread {    //定义一个有参的构造方法    public YieldThread(String name) {        super(name); //调用父类的构造方法        public void run() {            for (int i = 0; i < 5; i++) {                System.out.println(Thread.currentThread().getName() + "---" + i);                If(i == 2) {                    System.out.print( "线程让步:");                    Thread.yield(); //线程运行到此,作出让步                }            }        }    }    public class Example09 {        public static void main(String[] args) {            //创建两个线程            Thread threadl1 = new YieldThread("threadl");            Thread thread2 = new YieldThread("thread2");            //开启两个线程            Thread1.start();            thread2.start();        }    }

运行结果如图所示

什么是线程让步?

例10-9中创建了两个线程threadl和thread2,它们的优先级相同。两个线程在循环变量i等于2时,都会调用Thread的yield()方法,使当前线程暂停,让两个线程再次争夺CUP使用权,从运行结果可以看出,当线程thread1输出2以后,会做出让步,线程thread2获得执行权,同样,线程 thread2输出2后,也会做出让步,线程 threadl获得执行权。小提示:通过yield()方法可以实现线程让步,让当前正在运行的线程失去CPU使用权,让系统的调度器重新调度一次,由于Java虚拟机默认采用抢占式调度模型,所有线程都会再次抢占CUP资源使用权,所以在执行线程让步后并不能保证立即执行其他线程。

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/262930.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
黑马程序员黑马程序员订阅用户
上一篇 2023年5月13日 12:46
下一篇 2023年5月13日 12:47

相关推荐

  • 小编教你杭州推广策划公司|RTB广告交易模式成为广告的创意模式。

    在RTB广告买卖模式中,原有的广告生态链发生了颠覆性改变。其进程就也是极具创意创新意义。外行人听来彻底莫名其妙,有意思的是,常常却能令业内人士会心一笑。奥妙在于一项新技能在广告范畴的盛行——该公司对接的是…

    2023年6月26日
    01
  • 小编教你vc多线程编译怎么实现程序运行。

    VC多线程编译实现程序运行,需要在项目设置中启用多线程支持,并使用相关API进行线程创建、同步和互斥操作。 VC多线程编译怎么实现 在编程中,多线程编程是一种常见的技术,它可以提高程序的执行效率,Visual C++(V…

    2024年7月7日
    02
  • 教你delphi firedac教程。

    本教程将指导你如何使用Delphi的FireDAC组件进行数据库操作。 Delphi – FireMonkey性能问题 FireMonkey是Delphi的一个跨平台UI框架,它允许开发者使用一套代码创建Windows、macOS和iOS应用程序,尽管FireMonkey提供…

    2024年7月6日
    02
  • java关闭线程的方法有哪些。

    Java关闭线程的方法有:使用标志位、使用interrupt()方法、使用Thread.stop()方法。 在Java中,线程是程序执行的最小单位,我们需要关闭一个线程以停止其执行,Java提供了多种方法来关闭线程,下面我们将详细介绍这…

    2024年7月11日
    01
  • 我来分享浅析网站站群SEO操作技巧 。

    操作站群SEO技巧,相信这个问题一直是很多的SEO朋友们比较关心的问题。或许当提到“站群”这个名词的时候,你会直接把“站群”联想到黑帽SEO上面,其实如果你这样想的话,那么你就错了。我们暂且不去计较到底站群是不是…

    2023年3月13日
    03
  • 如何才能够更好的实现SEO优化呢?

    现在如果说是选择SEO优化模式,我们也要选择一个良好的模式,因为舍不着孩子套不着狼!如果说总是想着以稳妥的方式来进行SEO优化。这个可能时间久了之后也很难达到有好的关键词排名,如何才能够更好的实现SEO优化呢…

    2022年5月27日
    0164
  • 我来说说聚划算费用如何计算?相关模式介绍。

    聚划算费用如何计算。聚划算,也是一项类似付费推广的方式,是能够帮助卖家提高知名度、扩大品牌推广宣传、提高店铺流量的有效方法,但是,凡是有加入过聚划算的朋友们都知道,要想使用聚划算的相关服务,其实也是…

    2023年10月31日
    07
  • Java开发中Netty线程模型原理解析

    Java开发中Netty线程模型原理解析,Netty是Java领域有名的开源网络库具有高性能和高扩展性的特点,很多流行的框架都是基于它来构建。Netty 线程模型不是一成不变的,取决于用户的启动参数配置。通过设置不同的启动…

    2023年5月15日 编程分享
    06

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息