java Thread是否在系统中使用实时定时器或者它有自己的专用定时器?

Ach*_*sah 4 java multithreading timer java-me

有人知道该Thread.sleep(1000)方法使用的计时器吗?Thread是使用实时系统计时器还是拥有自己的专用计时器?

提前感谢您的回答.

aio*_*obe 5

Java语言规范将此方法的语义细节推迟到底层系统.因此,行为将取决于您正在使用哪个JVM实现,以及可能还在运行应用程序的操作系统和硬件.

这就是JLS中的方法(第17章:线程和锁)所说的全部内容:

17.9睡眠和产量

Thread.sleep导致当前正在执行的线程在指定的持续时间内休眠(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性.该线程不会失去任何监视器的所有权,并且恢复执行将取决于调度和执行该线程的处理器的可用性.

无论是零时间的睡眠还是屈服操作都不需要具有可观察到的效果.

值得注意的是,Thread.sleep和Thread.yield都没有任何同步语义.特别是,编译器不必在调用Thread.sleep或Thread.yield之前将寄存器中缓存的写入刷新到共享内存,编译器在调用Thread.sleep或Thread之后也不必重新加载缓存在寄存器中的值.让.