2013-04-24 69 views
0

我想每23±0.1毫秒執行一次函數。 這可以在java中完成嗎? 如果是的話如何? 在此先感謝!java中的定時器,精度爲0.1毫秒,間隔爲23毫秒

比方說,我想用SoTimeout 7毫秒具有HttpGet功能,我可以重複使用System.nanoTime()23 + -1毫秒?

+2

你可以顯示你已經嘗試過的任何代碼嗎?我們可以幫助您基於此。 – Uooo 2013-04-24 11:02:27

+1

這可能有所幫助:https://blogs.oracle.com/dholmes/entry/inside_the_hotspot_vm_clocks – 2013-04-24 11:05:29

+0

Duplicate:http://stackoverflow.com/questions/5132960/how-to-call-a-method-once-per-ms -in-java – BackSlash 2013-04-24 11:06:39

回答

0

您可以使用System.nanoTime()獲取時間並忙於等待,直到達到所需的時間。在大多數情況下,這必須優於0.1毫秒精度,但是仍然存在一個很小的風險,即您的線程無法運行,在這種情況下無法及時執行操作。

+0

假設我想用soTimeout 7 ms有HttpGet函數,我可以嗎用System.nanoTime()在23±1ms內重複一次? – user2114837 2013-04-24 13:24:52

+0

是的。我建議你試試。順便說一句,7 + 23是30,25毫秒是怎麼進來的? – 2013-04-24 13:51:34

+0

對不起我的錯誤,但我需要的是每23毫秒,運行7毫秒httpget,然後等待16毫秒總和23毫秒,併爲23毫秒獲得0.1毫秒的準確性。這是行得通的嗎? – user2114837 2013-04-24 14:06:39