如何将Java线程暂停一小段时间(例如100纳秒)?
我知道 可以使Java线程暂停一段时间,例如某些毫秒和某些纳秒。但是问题在于此函数的调用也会导致开销。
例如,如果我希望线程暂停100纳秒,然后调用 。这个过程的总成本是 ,这可能比我想要的要大得多。我如何避免这个问题并实现自己的目标?
我需要这样做的原因是我想离线进行仿真。我概述了任务的执行时间;现在,我想通过在同一时间段内挂起线程来模拟此执行时间。
谢谢!
回答:
睡眠的粒度通常受线程调度程序的中断周期限制。在Linux中,在最近的内核中,此中断时间通常为1毫秒。在Windows中,调度程序的中断时间通常为10或15毫秒左右
如果必须将线程暂停的时间少于此时间,则通常会使用繁忙的等待时间
:我怀疑您将在jrockit + solaris上获得最佳结果。窗户上的数字很糟糕。
@Testpublic 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