定时器:周期小于一毫秒

时间:2012-05-10 14:26:17

标签: java timer

作为标题,有没有办法让定时器工作在毫秒的阈值之下?

我的问题类似于以下问题,但它适用于Java: Thread.Sleep for less than 1 millisecond

4 个答案:

答案 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字段。