当前位置: 首页 > 面试题库 >

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

吕岳
2023-03-14
问题内容

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

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

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

谢谢!


问题答案:

睡眠的粒度通常受线程调度程序的中断周期限制。在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);
}


 类似资料:
  • 问题描述 (Problem Description) 如何暂停一段时间的线程? 解决方案 (Solution) 下面的示例演示如何通过创建sleepingThread()方法暂停一段时间。 public class SleepingThread extends Thread { private int countDown = 5; private static int threadCo

  • 问题内容: 我正在用Java Swing编写应用程序。我需要的是一个可以使用图形界面中的按钮停止“阐述”线程的过程。 这里有一个简单的项目专注于我的需求 问题很简单:在实际的应用程序中,用户设置一些选项,然后启动线程,对选定的数据进行详细说明。 我想提供一个“暂停”按钮,以便用户可以暂时停止详细说明并进行必要的检查,然后可以恢复操作。 我编码的方式是停止的图形线程,而不是“精化”线程。 如果运行示

  • 问题内容: 我声明我已阅读有关线程的内容,但从未使用过。所以我问你:) 我有两个线程:和,其中管理GUI和逻辑。 我将从开始。 然后在绘制GUI时,我将其暂停,以等待到达X点的run方法。 当到达X点进入run方法时,我暂停并继续。 并共享一些变量来管理GUI和逻辑… 我可以做吗?如果是,如何?:) 问题答案: 使用和方法: -使当前线程等待,直到另一个线程调用 该对象的方法。 -唤醒正在该对象的

  • 问题内容: 我正在开发满足个人需要的控制台脚本。我需要能够暂停很长一段时间,但是,根据我的研究,Node.js无法按需停止。一段时间后,读取用户的信息变得越来越困难……我已经看到了一些代码,但是我相信他们必须在其中包含其他代码才能使其正常工作,例如: 但是,我需要这段代码之后的所有内容才能在一段时间后执行。 例如, 我也看过类似的东西 但是Node.js无法识别这一点。 我如何才能实现这种长时间的

  • 问题内容: 最近,我开始将ucos-ii移植到Ubuntu PC。 众所周知,在ucos-ii中无法通过在pthread的回调函数中的“ while”循环中添加一个标记来执行暂停和恢复来模拟“进程”,以执行暂停和恢复操作(类似于下面的解决方案)。因为ucos- ii中的“进程”可以随时暂停或恢复! 我在下面的网站上找到了一种解决方案,但是由于过时而无法构建。它使用Linux中的进程来模拟ucos-

  • 问题内容: 我正在为个人需求开发类似脚本的控制台。我需要能够暂停很长一段时间,但是,根据我的研究,node.js无法按需停止。一段时间后,读取用户的信息变得越来越困难……我已经看到了一些代码,但是我相信他们必须在其中包含其他代码才能使他们工作,例如: 但是,我需要这段代码之后的所有内容才能在一段时间后执行。 例如, 我也看过类似的东西 但是node.js无法识别这一点。 我如何才能实现这种长时间的