gpt4 book ai didi

java - 如何暂停 Java 线程一小段时间,比如 100 纳秒?

转载 作者:IT老高 更新时间:2023-10-28 21:18:35 25 4
gpt4 key购买 nike

我知道 Thread.sleep() 可以让 java 线程暂停一段时间,比如几毫秒和几纳秒。但问题是这个函数的调用也会导致开销。

例如,如果我想让一个线程挂起 100 纳秒,我调用 Thread.sleep(0, 100)。这个过程的全部成本是 invocation_cost + 100 纳秒,这可能比我想要的要大得多。我怎样才能避免这个问题,并达到我的目的?

我需要这个的原因是我想离线进行模拟。我分析了一个任务的执行时间;现在我想通过在同一时间段内挂起一个线程来模拟这个执行时间。

谢谢!

最佳答案

sleep 的粒度一般受线程调度器的中断周期限制。在 Linux 中,这个中断周期在最近的内核中一般为 1ms。在 Windows 中,调度程序的中断周期通常在 10 或 15 毫秒左右

如果我必须在少于此时间的时间内停止线程,我通常会使用忙等待

编辑:我怀疑你会在 jrockit + solaris 上得到最好的结果。 Windows 框上的数字很糟糕。

@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 - 如何暂停 Java 线程一小段时间,比如 100 纳秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11498585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com