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

如何延迟Java?

齐英耀
2023-03-14
问题内容

我正在尝试用Java做某事,而我需要一些东西在while循环中等待/延迟几秒钟。

while (true) {
    if (i == 3) {
        i = 0;
    }

    ceva[i].setSelected(true);

    // I need to wait here

    ceva[i].setSelected(false);

    // I need to wait here

    i++;
}

我想构建一个步进音序器,并且对Java还是陌生的。有什么建议么?


问题答案:

If you want to pause then use java.util.concurrent.TimeUnit:

TimeUnit.SECONDS.sleep(1);

To sleep for one second or

TimeUnit.MINUTES.sleep(1);

To sleep for a minute.

由于这是一个循环,因此存在一个固有的问题-漂移。每次运行代码然后进入睡眠状态时,你运行的每一秒都会有点漂移。如果这是一个问题,请不要使用sleep

此外,sleep在控制方面不是很灵活。

为了每秒或每隔一秒延迟运行一次任务,我强烈建议你使用ScheduledExecutorServicescheduleAtFixedRatescheduleWithFixedDelay

例如,要myTask每秒运行一次该方法(Java 8):

public static void main(String[] args) {
    final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
    executorService.scheduleAtFixedRate(App::myTask, 0, 1, TimeUnit.SECONDS);
}

private static void myTask() {
    System.out.println("Running");
}

在Java 7中:

public static void main(String[] args) {
    final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
    executorService.scheduleAtFixedRate(new Runnable() {
        @Override
        public void run() {
            myTask();
        }
    }, 0, 1, TimeUnit.SECONDS);
}

private static void myTask() {
    System.out.println("Running");
}


 类似资料:
  • 问题内容: 因此,在这段代码中: 似乎在FileConverter方法尚未完成调用之前,消息对话框窗口弹出窗口的速度就太快了。我想知道JOptionPane的放置是否正确,或者是否可以将消息延迟到该方法完成处理之前? 问题答案: 您可以使用SwingWorker。 在这里看看Java教程。

  • 问题内容: 我有一个简短的问题,希望有人能帮助我。 请查看以下代码片段: 有人可以帮我解决这个问题吗?我想实现一种类似“工具提示”的行为:您用鼠标输入一个区域。如果鼠标停留在该位置,请执行某些操作。 问题答案: 在您的方法中延迟2秒启动计时器,该计时器将调用您想要执行的任何操作。 设置一个新的处理程序(),如果该计时器尚未关闭,则将其停止。 基本上,您知道如果尚未调用鼠标,鼠标仍会在那里。计时器将

  • 问题内容: jQuery 1.5带来了新的Deferred对象和附加的方法,以及。 对于那些以前从未使用过的用户,我已经为其添加了注释。 这些新方法的可能用途是什么,我们如何将它们适应模式? 我已经阅读了API和[源代码,所以我知道它的作用。我的问题是我们如何在日常代码中使用这些新功能? 我有一个缓冲区类的简单示例,该类按顺序调用AJAX请求。(上一个完成后,下一个开始)。 我在寻找示威和可能的用

  • 问题内容: 我在玩JavaFX的。我个人认为,将鼠标悬停在某物和实际显示的工具提示之间的延迟太长了。在API中的外观显示: 通常,当鼠标移至控件上方时,工具提示将被“激活”。在工具提示被“激活”到实际显示之间通常会有一些延迟。细节(例如延迟量等)留给Skin实现。 经过进一步的调查,我找不到控制延迟的任何可能性。在JavaFX的CSS参考没有关于延迟时间和运行时间,评价信息没有帮助。 我知道,有一

  • 我正在尝试用Java做一些事情,我需要在while循环中等待/延迟几秒钟。 我想构建一个step sequencer,我是Java新手。有什么建议吗?

  • 问题内容: 我正在尝试使用新的React Lazy和Suspense创建后备加载组件。这很好用,但后备时间仅显示几毫秒。有没有办法增加额外的延迟或最短时间,因此我可以在渲染下一个组件之前显示该组件的动画? 现在懒导入 等待组件: 我可以做这样的事情吗? 问题答案: 函数应该返回对象的承诺,该对象由具有默认导出功能的模块返回。不会返回承诺,也不能那样使用。尽管任意承诺可以: 如果目标是提供 最小的