什么是线程让步?

在校园中,经常会看到很多同学一起打篮球,当某个同学抢到篮球后可以拍一会儿再传递给其他人,大家重新开始抢篮球,这个过程就相当于程序中的线程让步。线程让步可以通过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/262232.html

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

(0)
黑马程序员黑马程序员订阅用户
上一篇 2023年5月6日 23:39
下一篇 2023年5月6日 23:40

相关推荐

  • 分享使用暗模式设计的最佳做法。

    在网站制作中,创建暗模式UI时,某些过程需要正常运行。毕竟,您希望您的网站发挥作用,对吗?那如何使用暗模式,最佳做法有哪些呢?1. 不要太暗图书出版商不使用纯白色纸,因为与黑色墨水的对比度太过鲜明。它会使您…

    2023年6月16日
    00
  • Java教程:使用工厂模式最主要的好处是什么?

    Java中使用工厂模式的最主要好处是可以将对象的创建与具体实现解耦,从而实现更好的灵活性和可维护性。具体来说,工厂模式可以帮助我们隐藏创建对象的细节,同时也可以在需要时灵活地更改具体实现,而不需要修改客…

    2023年4月26日
    00
  • 说说如何实现linux多线程编程。

    在Linux环境下,多线程编程是一种常见的并发编程方式,它允许程序同时执行多个任务,从而提高了程序的执行效率,本文将详细介绍如何在Linux环境下实现多线程编程。 线程的基本概念 线程是操作系统能够进行运算调度…

    2024年7月11日
    00
  • 我来教你c#中多线程。

    C#中多线程是实现并行处理的一种方式,可以提高程序的执行效率。 在C中,多线程是一种处理多个数据的有效方法,通过使用多线程,我们可以同时执行多个任务,从而提高程序的执行效率,本文将详细介绍如何在C中使用多…

    2024年7月12日
    00
  • 小编教你使用暗模式进行设计的5个重要技巧。

    暗模式网站设计可以在任何地方工作。从移动应用到智能手表再到电视界面,这种设计趋势可以推动您的品牌前进。1. 匹配您的品牌颜色当某个品牌的现有调色板已经兼容暗模式时,暗模式众神在向您微笑。如果您似乎不得不…

    2023年6月16日
    00
  • 我来分享浅析网站站群SEO操作技巧 。

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

    2023年3月13日
    03
  • 小编教你seo服务有什么样的模式和收费标准。

    如果要谈到网络推广的话,相信大多数的企业负责人可能会想到的就是百度竞价,但是大多数的人也会感觉到这样的一种推广方式,费用特别高,因此他们在一开始的时候就在寻找性价比相对较高的推广方式,其实很多人会考…

    2023年6月26日
    01
  • 教你基于B2B模式的独立网站应该如何运营。

    对于一名seo人员,在以往的工作经历中,我们大量的时间都是花费在B2C的网站优化中,很少操作B2B网站,而随着行业竞争的异常激烈,B2C SEO,已经成为红海,而基于B2B模式的独立网站,非企业黄页垂直站,我们认为目前…

    2023年6月22日
    00

联系我们

QQ:951076433

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