6 sleep与yield的比较

这篇具有很好参考价值的文章主要介绍了6 sleep与yield的比较。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

6 sleep与yield的比较

sleep

  1. 调用 sleep 会让当前线程从 Running 进入 Timed Waiting 状态(阻塞)

  2. 其它线程可以使用 interrupt 方法打断正在睡眠的线程,这时 sleep 方法会抛出 InterruptedException

  3. 睡眠结束后的线程未必会立刻得到执行

  4. 建议用 TimeUnit 的 sleep 代替 Thread 的 sleep 来获得更好的可读性

yield

  1. 调用 yield 会让当前线程从 Running 进入 Runnable 就绪状态,然后调度执行其它线程 。同时,该线程在就绪状态时,CPU可能会分配资源给它,使其进入运行态。

  2. 具体的实现依赖于操作系统的任务调度器文章来源地址https://www.toymoban.com/news/detail-509211.html

yield和线程优先级代码实例

//代码实例
public class YieldAndPriority {

   public static void main(String[] args) {
       Runnable task1 = new Runnable() {
           @Override
           public void run() {
               int count = 0;
               //yield,让线程进入就绪态,CPU可能会调度该线程,使得该线程变为执行状态
               Thread.yield();
               while (true) {
                   System.out.println("-------> task1 count=" + count++);
               }
           }
       };

       Runnable task2 = new Runnable() {
           @Override
           public void run() {
               int count = 0;
               while (true) {
                   System.out.println("                            --------------------------------------> task2 count=" + count++);
               }
           }
       };

       Thread t1 = new Thread(task1, "t1");
       Thread t2 = new Thread(task2, "t2");
       //设置优先级1-10 越大优先级越高
       t1.setPriority(1);
       t2.setPriority(10);

       t1.start();
       t2.start();
   }
}

//输出结果
...
--------------------------------------> task2 count=34436
--------------------------------------> task2 count=34437
--------------------------------------> task2 count=34438
--------------------------------------> task2 count=34439
--------------------------------------> task2 count=34440
--------------------------------------> task2 count=34441
--------------------------------------> task2 count=34442
--------------------------------------> task2 count=34443
--------------------------------------> task2 count=34444
-------> task1 count=42407
-------> task1 count=42408
-------> task1 count=42409
-------> task1 count=42410
-------> task1 count=42411
-------> task1 count=42412
-------> task1 count=42413
-------> task1 count=42414
-------> task1 count=42415
-------> task1 count=42416

进程已结束,退出代码130

到了这里,关于6 sleep与yield的比较的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 当前目录下的excel文件的两列内容的相似度比较

    # -- coding: utf-8 --** from sklearn.feature_extraction.text import CountVectorizer from sklearn.metrics.pairwise import cosine_similarity import numpy as np import pandas as pd import os # 获取当前目录 current_dir = os.getcwd() # 获取当前目录下所有xlsx文件名 xlsx_files = [file for file in os.listdir(current_dir) if file.endswith(\\\".xlsx\\\")]

    2024年02月11日
    浏览(27)
  • js 比较当前日期是否在某个是个范围之内(时间段内)

    需求描述:判断当前日期或者指定日期是不是在某个时间段内 借用momentjs库去实现 安装moment 1)有两种方法,一种是vue,另一种是node中 当前日期是否在一个日期时间段内 isBetween isBetween:检查一个 moment 是否在其他两个 moment 之间,可选择检查指定的时间刻度(分钟,小时,日

    2024年02月05日
    浏览(41)
  • java 获取当前线程的方法

      我们知道,线程是程序运行的基本单元,是程序中各进程之间通信的桥梁,一个线程的创建和销毁直接影响整个程序的运行效率。 我们在 Java中经常使用 Runnable接口来获取当前线程,获取线程的主要目的就是为了快速地启动进程。但是,由于 Runnable接口实现复杂,因此我们

    2024年02月01日
    浏览(36)
  • 多线程/WinAPI线程退出方式比较分析

    关于如何终止 Windows 线程,在 MSDN Terminating a Thread 一文中列举的很详细: A thread executes until one of the following events occurs: The thread calls the ExitThread function. 调用 WINAPI ExitThread 线程退出函数。 Any thread of the process calls the ExitProcess function. 调用 WINAPI ExitProcess 进程退出函数。 The thre

    2024年02月08日
    浏览(25)
  • vs code 可视化git diff比较历史文件与当前文件(git lens插件)

    首先我们需要安装git lens插件 和git graph插件 然后 我想比较first和 当前HEAD的文件差异 如果使用命令行,就是 但是这样很不方便,不能可视化 如果安装了git lens 只需要 打开想看的文件 打开侧边栏的git标志,然后打开FILE HISTORY。这里就显示了所有与该文件修改有关的commit 3. 点

    2024年02月16日
    浏览(32)
  • Python中的并发编程:多线程与多进程的比较【第124篇—多线程与多进程的比较】

    在Python编程领域中,处理并发任务是提高程序性能的关键之一。本文将探讨Python中两种常见的并发编程方式:多线程和多进程,并比较它们的优劣之处。通过代码实例和详细的解析,我们将深入了解这两种方法的适用场景和潜在问题。 多线程是一种轻量级的并发处理方式,适

    2024年03月14日
    浏览(68)
  • 微服务:从header中获取用户存入当前线程

    1、从网关gateway工程filter中解析token携带的当前用户信息并添加到header中         filter完整代码 2、在utils工程下创建一个线程工具类WmThreadLocalUtil       3、在业务项目中创建拦截器 WmTokenInterceptor          得到header中的用户信息并存入当前线程 4、在业务工程中创建配

    2024年02月13日
    浏览(28)
  • 当前vscode环境下 多进程多线程运行情况探究

    其中在“打开图片时”、“进入子进程之前”、“子进程join前”、“进入子进程区域后”,“子进程join后”、“进入子线程区域后”分别打印了进程线程的编号和数量。 当前环境进程本来就有8个,在创建进程的时候没有增添多的进程的数量,说明我自己在创建子进程知识激

    2024年01月19日
    浏览(30)
  • 【JavaSE专栏82】线程中断,发送一个中断信号给另一个线程,让它中断当前的执行

    作者主页 :Designer 小郑 作者简介 :3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN学院、蓝桥云课认证讲师。 主打方向 :Vue、SpringBoot、微信小程序 本文讲解了 Java 中线程中断的语法和应用场景,并给出了样例代码。线程中断指的是

    2024年02月10日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包