这段代码有没有性能优化的空间,while (true) { // 无限循环 try { Thread.sleep(20 * 60 * 1000); // 等待20分钟 } catch (InterruptedException e) { e.printStackTrace(); } JOptionPane.showMessageDialog(null, "休息20s"); // 弹出提示框 try { Thread.sleep(20 * 1000); // 等待20秒 } catch (InterruptedException e) { e.printStackTrace(); } JOptionPane.getRootFrame().dispose(); // 关闭提示框 }
时间: 2023-05-30 21:03:52 浏览: 150
此代码存在性能优化的空间。
首先,使用无限循环会导致 CPU 不断占用,建议使用定时器代替无限循环。其次,弹出提示框会阻塞当前线程,建议使用多线程或非阻塞方式实现。最后,JOptionPane.getRootFrame().dispose() 可能会造成内存泄漏,建议使用 disposeOnClose 设置为 true。
以下是优化后的代码示例:
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JOptionPane;
public class Main {
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(20 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
JOptionPane.getRootFrame().dispose();
}).start();
}
}, 0, 20 * 60 * 1000);
}
}
阅读全文