作爲標題,有沒有辦法使定時器在毫秒級的閾值下工作?定時器:週期小於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 –