java - 有没有办法在本地时间之前触发一个 Action ?

标签 java

我知道这可能看起来很简单,但我对 Java 确实很陌生,所以我需要你的帮助。

我想使用本地时间(毫秒)来触发操作,例如打印“Hello world”。 更具体地说,在 "13:10:30:300"打印 "Hello world"。但我不知道应该使用哪个特定类(数据、本地时间等),以便我可以在 while 循环中将其与所需时间进行比较。 我尝试过这个,但它在毫秒内不起作用。

import java.time.format.DateTimeFormatter;  
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss:ms");  
     LocalDateTime now = LocalDateTime.now();  
     LocalDateTime desire = 13:10:30.300;
     while (now != desire ) {
         LocalDateTime now = LocalDateTime.now();
     }
     System.out.println("Hello World!");

请问您有什么建议吗?

最佳答案

你的主要问题是:现在!=渴望。这比较的是这些对象是否相同,而不是它们的内容是否相同。要比较时间是否相同,您应该使用 now.equals(desire)

您的第二个问题是,如果两次检查之间的 now 变得大于 desire,则此循环可能会变得无限。

你的第三个问题是你不断地检查时间浪费了CPU周期。您应该计算您想要的时间还有多少毫秒,然后 sleep 直到那时。所以类似:Thread.sleep(desireMillis - nowMillis)

关于java - 有没有办法在本地时间之前触发一个 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60869619/

相关文章:

java - 将 long [] 数据转换为 ArrayList<BigInteger>

java - 创建我所在类的一个对象

java - 应用程序不适合所有显示尺寸

java - 如何在不使用hql和sql的情况下使用hibernate在java中更新表

java - 动态生成标题,其中可单击列表项显示分组内容

java - 如何使用 Spring Boot 外部化配置?

java - Spring - 加载 applicationContext.xml 时出现问题

java - 将 Object[] 结果在 Matlab Runtime 中转换为 double[][] 数组 Java

java - Spring不加载自定义CSS

java - 字典:硬编码与外部文件