2013-04-24 71 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