只有当以下两个条件都成立时,我才想打印出“Hello World”
;
- 如果当前时间大于或等于晚上 8 点。
- 如果
isDone
变为 true。这是来自另一个服务,基本上是为了检查某个进程是否完成。
否则我会继续 sleep ,直到上述两个条件都成立。下面是我的代码:
public static void main(String[] args) {
DateTime dt = new DateTime();
int hour = dt.getHourOfDay();
if (hour < 20) {
TimeUnit.HOURS.sleep(20 - hour);
}
boolean isDone = checkStatus();
while (!isDone) {
TimeUnit.MINUTES.sleep(15);
isDone = checkStatus();
}
// now print out
System.out.println("Hello World");
}
如您所见,我分别有两个不同的条件来进行检查,然后最后打印出来。有没有更好的方法编写上面的代码来完成同样的事情?
它不必完全准确。我每 15 分钟调用一次 checkStatus
方法来查看 isDone
是否变为 true。
最佳答案
应用程序中存在一个错误,如果恰好是在上午 8 点之后,但 checkStatus
在午夜之前未返回 true
,那么它将继续白天执行。
将循环内的两个条件放在一起:
boolean isDone = false;
while (!isDone) {
int hour = new DateTime().getHourOfDay();
isDone = hour >= 20;
if (!isDone) TimeUnit.HOURS.sleep(20 - hour);
isDone = checkStatus();
if (!isDone) TimeUnit.MINUTES.sleep(15);
}
System.out.println("Hello World");
关于java - 仅在满足条件时打印 hello world,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39802769/