正如标题,有没有办法让定时器在毫秒的阈值下工作?
我的问题与以下问题类似,但它适用于 Java: Thread.Sleep for less than 1 ms
如果你想睡觉,Thread.sleep
有 2 种方法,其中一种接受 nanoseconds。如果你想安排一个任务,你可以使用ScheduledExecutorService
哪些schedule
方法也可以使用纳秒。
正如@MarkoTopolnik 所解释的,结果很可能不会精确到纳秒。
Thread.sleep(long millis, int nanos)
另请查看此答案,详细了解 Windows 上的问题。
您可以等待没有人会通知的对象...
synchronized (someObjectNobodyWillNotify) {
try {
someObjectNobodyWillNotify.wait(0, nanosToSleep);
}
catch (InterruptedException e) {
Thread.interrupt();
}
}
(在这种情况下,我猜虚假唤醒是可以的。如果不是,您需要System.nanoTime()
在开始时记录您的并将其包装wait
在一个循环中,以检查是否已经过了足够的时间。)
java.util.concurrent 包使用TimeUnit进行计时。TimeUnit 有一个 NANOSECONDS 字段。