"使用 Thread.sleep(1L); 休眠会造成线程切换导致的不必要损耗吗?"

【java】让线程休眠 1ms 好还是不休眠好

使用 Thread.sleep(1L); 休眠会造成线程切换导致的不必要损耗吗?

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2192 引用 • 7483 回帖 • 995 关注
  • 线程
    73 引用 • 91 回帖 • 1 关注
  • Q&A

    提问之前请先看一下这篇文章 《提问的智慧》精读注解版,好的问题比好的答案更有价值。

    990 引用 • 6276 回帖 • 607 关注
被采纳的回答
  • Aresxue  

    Thread.sleep 支持纳秒级别的暂定,但是内部的实现最终还是毫秒级别的执行,以 500 000 纳秒作为分割,大于这个值时,线程在 millis 的基础上多 sleep 1 毫秒,否则还是 sleep millis 毫秒,当然如果 millis 为 0 时,会 sleep 1 毫秒,sleep() 中指定的时间是线程不会运行的最短时间,不适合做毫秒级的精准时间控制。
    我觉得换个思路更好点,比如监控一个值的变化看它是否在 1ms 完成,可以借助 PropertyChangeSupport 实现。

4 回帖   
请输入回帖内容...
  • Aresxue  

    不说明场景怎么下判断,这个 1ms 是实现什么功能的?如果没有具体作用肯定是不休眠好啊。

    1 回复
  • LemUninxg    

    这个是我没描述清楚,我只想监控一个值的变化

  • Aresxue  

    Thread.sleep 支持纳秒级别的暂定,但是内部的实现最终还是毫秒级别的执行,以 500 000 纳秒作为分割,大于这个值时,线程在 millis 的基础上多 sleep 1 毫秒,否则还是 sleep millis 毫秒,当然如果 millis 为 0 时,会 sleep 1 毫秒,sleep() 中指定的时间是线程不会运行的最短时间,不适合做毫秒级的精准时间控制。
    我觉得换个思路更好点,比如监控一个值的变化看它是否在 1ms 完成,可以借助 PropertyChangeSupport 实现。

    1 回复
  • LemUninxg    

    感谢,原来还有这么个属性 hhhhh