如何将Java线程暂停一小段时间(例如100纳秒)?

我知道 可以使Java线程暂停一段时间,例如某些毫秒和某些纳秒。但是问题在于此函数的调用也会导致开销。

例如,如果我希望线程暂停100纳秒,然后调用 。这个过程的总成本是 ,这可能比我想要的要大得多。我如何避免这个问题并实现自己的目标?

我需要这样做的原因是我想离线进行仿真。我概述了任务的执行时间;现在,我想通过在同一时间段内挂起线程来模拟此执行时间。

谢谢!

回答:

睡眠的粒度通常受线程调度程序的中断周期限制。在Linux中,在最近的内核中,此中断时间通常为1毫秒。在Windows中,调度程序的中断时间通常为10或15毫秒左右

如果必须将线程暂停的时间少于此时间,则通常会使用繁忙的等待时间

:我怀疑您将在jrockit + solaris上获得最佳结果。窗户上的数字很糟糕。

@Test

public void testWait(){

final long INTERVAL = 100;

long start = System.nanoTime();

long end=0;

do{

end = System.nanoTime();

}while(start + INTERVAL >= end);

System.out.println(end - start);

}

以上是 如何将Java线程暂停一小段时间(例如100纳秒)? 的全部内容, 来源链接: utcz.com/qa/422048.html

回到顶部