作为标题,有没有办法使定时器在毫秒级的阈值下工作?定时器:周期小于1毫秒
我的问题是类似下面的一个,但它是针对Java: Thread.Sleep for less than 1 millisecond
作为标题,有没有办法使定时器在毫秒级的阈值下工作?定时器:周期小于1毫秒
我的问题是类似下面的一个,但它是针对Java: Thread.Sleep for less than 1 millisecond
如果你想睡觉,Thread.sleep
有2种方法,one of which accepts nanoseconds。如果您想安排任务,则可以使用ScheduledExecutorService
,这些方法也可以使用纳秒。
正如@MarkoTopolnik所解释的,结果很可能不会精确到纳秒。
谢谢,我已经使用Executors.newSingleThreadScheduledExecutor()和它的工作了Thread.sleep的 – Hamal000
的源代码(钢厂,毫微秒)却与此将任何nanos凑到1 millicesond :) – user2602807
你可以等待的对象,没有人会通知上...
synchronized (someObjectNobodyWillNotify) {
try {
someObjectNobodyWillNotify.wait(0, nanosToSleep);
}
catch (InterruptedException e) {
Thread.interrupt();
}
}
(在这种情况下,我猜虚假唤醒是好的。如果没有,则需要在开始记录您的System.nanoTime()
并将wait
包装在一个循环中,以检查是否已经过足够的时间。)
java.util.concurrent包使用TimeUnit进行计时。 TimeUnit有一个NANOSECONDS字段。
Thread.sleep(long millis, int nanos)
还检查出this answer与在Windows上的这个问题的细节。
你需要阅读这个帖子http://www.rationaljava.com/2015/10/measuring-microsecond-in-java.html这个主题。 – Dan
检查这个答案一种解决方法: http://stackoverflow.com/a/35189397/4043486 –