java - 仅在满足条件时打印 hello world

标签 java jodatime sleep

只有当以下两个条件都成立时,我才想打印出“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/

相关文章:

java - 在 joda time 中使用 parseDateTime 时休息 1 天

java - Thread 类的静态 sleep 方法如何在不访问 'this' 引用的情况下工作?

java - JBoss 6 中实例之间共享属性文件

java - 跳过假期+ Joda时间计算结束日期

java - 显示音频波形和缩放

scala - Slick:过滤所有 joda DateTime 日期等于今天的记录

javascript - 对话框ajax加载动画效果-需要循环延迟、 sleep

python - 在 Macbook 关闭的情况下保持 Jupyter notebook 运行

java - 根据枚举列表验证字符串列表

java - 如何在 Linux 上从 shell 脚本运行 java 代码