首页 > 编程语言 >深入理解Java中的Thread.sleep

深入理解Java中的Thread.sleep

时间:2022-08-24 09:59:52浏览次数:100  
标签:Java Thread blog 休眠 sleep 线程 CPU

Thread.sleep()方法能够已毫秒为时间单位暂停当前执行的线程,参数值为毫秒不能为负数,否则将抛出IllegalArgumentException异常。

Java线程休眠要点:

1.它总是暂停当前执行的线程

2.实际休眠的线程在唤醒开始执行前依赖于系统定时器和调度器,对于一个平稳的系统来住,线程实际执行的时间接近于指定线程休眠时间,但是对于一个忙碌的系统来说它将稍微超出一些。

3.当线程休眠时不会丢失已经获得的监控和锁。

4.任何线程都能中断当前休眠的线程,将导致InterruptedException异常抛出。

Thread.sleep(1000),1000ms后是否立即执行?
不一定,在未来的1000毫秒内,线程不想再参与到CPU竞争。那么1000毫秒过去之后,这时候也许另外一个线程正在使用CPU,那么这时候操作系统是不会重新分配CPU的,直到那个线程挂起或结束;况且,即使这个时候恰巧轮到操作系统进行CPU 分配,那么当前线程也不一定就是总优先级最高的那个,CPU还是可能被其他线程抢占去。

Thread.sleep(0),是否有用?

休眠0ms,这样的休眠有何意义?Thread.Sleep(0)的作用,就是“触发操作系统立刻重新进行一次CPU竞争,重新计算优先级”。竞争的结果也许是当前线程仍然获得CPU控制权,也许会换成别的线程获得CPU控制权。这也是我们在大循环里面经常会写一句Thread.sleep(0) ,因为这样就给了其他线程获得CPU控制权的权力,这样界面就不会假死在那里。

本文转自 https://blog.csdn.net/Untara/article/details/100106718?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-15-100106718-blog-78031520.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-15-100106718-blog-78031520.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=20,如有侵权,请联系删除。

标签:Java,Thread,blog,休眠,sleep,线程,CPU
From: https://www.cnblogs.com/godshadow/p/16618753.html

相关文章

  • 36. Redis---Java使用Redis
    1.前言在开始学习本节内容之前,首先需要您掌握Java编程语言,其次确定您已经安装了Redis服务及JavaRedis驱动,并且能够成功运行Java程序。本节介绍如何在Java中......
  • Blog粘贴图片自动上传到服务器(Java版)
    ​项目需求可发布文章需求涉及到富文本编辑器经过查阅我选择了较为简便不需要后端支持可独立完成的tinymce框架官方文档也是相当完整虽然都是全英文但是有强大的谷......
  • Java-Java集合流操作
    List分组List去重1、单字段去重2、多字段去重List交集方法retainAllList分组去重获取最新记录List分组去重获取最新记录修订记录版本是否发布202......
  • Java-List集合字段求和函数
    一、FunctionCustom通用求和函数使用示例二、求和函数修订记录版本是否发布2020-01-25v1.0是一、FunctionCustom通用求和函数使用示例特点:简化代码......
  • JavaSE的基础
    初始Java1.核心机制:垃圾收集器、跨平台2.JDK、JRE、JVM数据类型1.变量和常量字面常量、字符常量2.基本数据类型:byte1、short2、int4、long8、float4、double8、char2......
  • 关于rt-thread调度器实现的底层代码分析
      本文使用了rt-thread自带的钩子函数和显示函数进行了实验,从rt-thread自带的延时函数rt_thread_delay()函数入手,对rt-thread系统的调度器进行分析。主要参考资料是野火......
  • 【Java学习day04】Hello World
    HelloWorld随便新建一个文件夹,存放代码在新建的文件夹里新建一个java文件新建一个文本文档将新建的文本文档重命名为hello.java注意了!后缀必须改为.java并保存......
  • Thread starvation or clock leap detected
    23:39:27.182WARNcom.zaxxer.hikari.pool.HikariPool.run()@787-HikariPool-2-Threadstarvationorclockleapdetected(housekeeperdelta=1m41s470ms15µs10......
  • Java基本语法
    >JAVA基本语法标识符定义:凡是自己可以起名字的地方都叫标识符。涉及到的结构:包名、类名、接口名、方法名、变量名、常量名。标识符命名规则:(必须遵守,否则编译不通过)1.......
  • Java 运行时数据区
    Java运行时数据区堆线程栈本地方法栈方法区程序计数器我们的java文件,首先编译成class文件。通过类加载器加载到我们的Java虚拟机。Java虚拟机中,最大的一块是运行......