public static void main(String[] args) { Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { JOptionPane.showMessageDialog(null, "休息20s"); new Thread(() -> { try { Thread.sleep(3 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } JOptionPane.getRootFrame().dispose(); }).start(); } }, 0, 1 * 60 * 1000); },这段代码中,JOptionPane.getRootFrame().dispose();并未生效
时间: 2023-05-30 09:04:07 浏览: 55
Java计时器Timer和TimerTask用法总结
可能是因为该语句在新开的线程中执行,而不是在主线程中执行。可以尝试将该语句放在主线程中执行,或者使用SwingUtilities.invokeLater()方法将其放入事件分发线程中执行。另外,建议不要在TimerTask中使用Swing组件,因为TimerTask是在非事件分发线程中执行的,可能会导致线程安全问题。可以考虑使用Swing Timer替代TimerTask。
阅读全文