Java 假性唤醒会影响睡眠吗?

Java 假性唤醒会影响睡眠吗?,java,multithreading,Java,Multithreading,虚假唤醒是否会影响对Thread.sleep(x)的调用?显然,计时器不是100%精确的(导致唤醒时间的微小误差),但它是否受到虚假唤醒问题的影响?您要问的是Thread.sleep()是否受到影响对象的同一问题的影响。等待(长),对吗?答案是没有与Thread.sleep()相关的虚假唤醒记录。你是对的,当你请求N毫秒的时候,没有硬性保证你会睡多久。当然,Thread.sleep()在线程中断时终止。真正的睡眠时间间隔始终>=所需的时间间隔。它对小间隔特别敏感 现在是关于“虚假唤醒”。没有提到

虚假唤醒是否会影响对Thread.sleep(x)的调用?显然,计时器不是100%精确的(导致唤醒时间的微小误差),但它是否受到虚假唤醒问题的影响?

您要问的是
Thread.sleep()
是否受到影响
对象的同一问题的影响。等待(长)
,对吗?答案是没有与
Thread.sleep()
相关的虚假唤醒记录。你是对的,当你请求N毫秒的时候,没有硬性保证你会睡多久。当然,
Thread.sleep()
在线程中断时终止。

真正的睡眠时间间隔始终>=所需的时间间隔。它对小间隔特别敏感


现在是关于“虚假唤醒”。没有提到线程。睡眠

你说的“受影响”是什么意思?您是否在问,这是否会导致他们无法在适当的时间执行?还是不醒来?或者你是在问他们是否会意外醒来?我是在问他们是否会在应该被唤醒之前被意外唤醒(“应该”被定义为一段时间长度大于基本计时器的自然误差)。那么你的意思是回答是“不,我们不必防止虚假唤醒”还是“是的,我们确实必须防止虚假唤醒”@Pacerier:我将总结(或重新阶段)为:
Thread.sleep()
不会遭受虚假唤醒。(官方JDK文档没有提到
Thread.sleep()
)但是,
Thread.sleep()没有虚假唤醒)
不能保证睡眠
x
毫秒,因为另一个线程可能会调用
thread.interrupt()
来唤醒睡眠线程。