Java Timer 不等待前一个 TimerTask 在新的 TimerTask 开始之前完成

标签 java timer modal-dialog

我正在用 Java 编写应用程序,但遇到以下问题:一段时间后,显示了一个 inputDialog(JOptionPane)。因为间隔很短,即 10 秒,如果我延迟与第一个对话的交互,那么第二个将在我之后立即出现。有什么办法可以避免这种情况吗?我以为那个程序会等待我的输入。

代码:

Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
          @Override
          public void run() {
            String task = JOptionPane.showInputDialog(null, "What are you doing now???", "");
          }
        }, 10*1000, 10*1000);

最佳答案

如果任务已经在运行,只需检查你的运行方法,当它运行时,返回。

添加一个变量

static boolean isRunning = false;

到您的 TimerTask 实现类。你的运行方法看起来像这样:

 public void run() {
     if (isRunning == false) {
         isRunning = true;

         // your code

         isRunning = false;
     }
 }

关于Java Timer 不等待前一个 TimerTask 在新的 TimerTask 开始之前完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15999727/

相关文章:

winapi - 在 Win32 中如何获取 CPU 周期数?

android - 如何在安卓游戏中实现计时器

javascript - 如何在页面加载时加载jQm模式?

javascript - 如何使模态图像在自动图像 slider 上工作?

java - 如何配置 JpaPersistModule?

java - R 无法解析为变量 - 在 Eclipse 中将 Android API 20 更新为新的 API 22 后

java - JMH 不在 Eclipse 中工作(作为 Maven 项目)——没有要运行的基准

java - XMLEventWriter 从头开始​​ : how do I emit xmlns attribute?

ios - 运行自定义动画的首选方式

javascript - JS 在控制台中可以工作,但在代码中不起作用