我读过一些帖子说在循环中调用 Thread.sleep() 是有问题的,并且是一个严重的性能问题。但在某些情况下,这似乎是最自然的做法。
例如,如果我希望我的应用程序每 3 分钟 执行一次操作(假设它是一个自动保存)
public void startAutosaveLoop(){
stop = false;
new Thread(new Runnable() {
@Override
public void run() {
while (!stop){
Thread.sleep(T*1000);
if (!stop){
// do something
}
}
}
}).start();
}
有更好的方法吗?这种情况有问题吗?
最佳答案
长时间 sleep 不会影响性能。如果您 hibernate 5 毫秒,检查一些条件,然后重新 hibernate 5 毫秒等 3 分钟,这将产生一些性能成本。
如果您需要每 3 分钟执行一次操作,那么改用调度程序会更有意义。
你可以看看javadoc of ScheduledExecutorService举一个非常相似的例子。
关于java - 在 Java 的循环中使用 Thread.sleep() 定期做某事是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14561324/