【发布时间】:2017-02-09 16:42:10
【问题描述】:
我只想在以下两个条件都为真时打印出"Hello World";
- 如果当前时间大于或等于晚上 8 点。
- 如果
isDone变为真。这来自另一个服务,主要是检查某个进程是否完成。
否则我会一直睡觉,直到上述两个条件都成立。以下是我的代码:
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 是否变为真。
【问题讨论】:
-
@c0der 不明白?你能解释一下这是什么意思吗?
-
是否保证
checkStatus在4小时内为真?否则,如果需要更长时间,则会在不适当的时间打印。 -
不,不能保证在 4 小时内或任何时间它都是真的。但我仍然会继续睡觉,直到它成为现实。我们将监控 checkStatus 过程中是否存在任何问题,如果有任何问题,我们将停止整个过程。这只是为了解释这个想法。