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