我正在用 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/