gpt4 book ai didi

Java代码动态获取系统日期并发出警报

转载 作者:行者123 更新时间:2023-12-02 07:17:16 25 4
gpt4 key购买 nike

我正在尝试编写一个java代码,该代码将在一天中的特定时间发出警报,但我不知道为什么我失败了(请温柔对待我的问题,因为我对编程完全陌生)。我有这个代码

    new ScheduledThreadPoolExecutor(1).schedule(new Runnable() {
public void run() {
if(Calendar.SECOND==30)
{
JOptionPane.showMessageDialog(null, "Hola Amigo");
}
}
}, 1, TimeUnit.SECONDS);

我应该尝试刷新页面吗?请帮忙...

最佳答案

您正在检查固定常量值 Calendar.SECOND (13) 是否等于 30。显然,这永远不会是真的,因此对话框永远不会出现。您需要在日历实例中检查此字段。

同时使用schedule意味着执行器线程只运行一次。使用scheduleAtFixedRate。

此外,您还需要在 EDT 中调用 showMessageDialog 以确保该调用不会阻塞 Executor Thread.

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
Calendar calendar = Calendar.getInstance();
int second = calendar.get(Calendar.SECOND);
if (second == 30) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JOptionPane.showMessageDialog(null, "Hola Amigo");
}
});
}
}
}, 1, 1, TimeUnit.SECONDS);

如果您想每 30 秒调用一次 ExecutorService 而不是重复检查当前秒,您可以调用

scheduler.scheduleAtFixedRate(myRunnable, 1, 30, TimeUnit.SECONDS);

关于Java代码动态获取系统日期并发出警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14790510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com