经过20秒后如何从while循环中中断?我想避免使用线程。
while (var) {
// ...do something
if (20secondsIsPassed) {
break;
}
}
答案 0 :(得分:4)
如果您的if
循环中有while
,它会检查经过的时间,那么您将不会有20秒,但至少是 20秒。最简单的方法是这样的:
LocalDateTime then = LocalDateTime.now();
while (true) {
// logic
if (ChronoUnit.SECONDS.between(then, LocalDateTime.now()) >= 20) break;
}
答案 1 :(得分:3)
只需知道每秒代表1000毫秒,就可以进行以下计算:
long seconds = System.currentTimeMillis();
while (var && (seconds + (20 * 1000) > System.currentTimeMillis())) {
// ...do something
}