[英]Thread.sleep performance vs other solutions
我正在研究一个 JavaFx 项目,其中有一个如下所示的睡眠方法:
public void run() {
while (true) {
try {
method1()
Thread.sleep(2000);
Runnable1
Thread.sleep(10000);
if (condition 1){
method2
Thread.sleep(10000);
}else{
Runnable3
Thread.sleep(20000);
}
switch ()
case 1
Runnable 1
Thread.sleep(12000);
case 2
Runnable 4
Thread.sleep(12000);
case 3
Thread.sleep(5000);
}
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
break;
}
}
问题是“case when and if else”的继承非常复杂(大约 20 个分支)。
有没有比总是使用“Thread.sleep”更好的方法来做到这一点。
几乎总有比Thread.sleep
更好的方法。
它非常脆弱,因为无法保证“事情”会在该睡眠时间内发生,除非您将睡眠时间延长到您等待不必要的长时间(即使那样,也无法保证)。
您可能正在等待某些情况发生变化; 所以也许看看Condition
; 或查看诸如Future
(包括CompletableFuture
)之类的东西以在先前的任务完成时执行某些操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.