Java代码,用于动态显示系统日期并发出警报
我正试图编写一个java代码,在一天中的某个特定时间发出警报,但我不知道为什么我失败了(请对我的问题温和一点,因为我对编程一无所知)。我有这个密码Java代码,用于动态显示系统日期并发出警报,java,Java,我正试图编写一个java代码,在一天中的某个特定时间发出警报,但我不知道为什么我失败了(请对我的问题温和一点,因为我对编程一无所知)。我有这个密码 new ScheduledThreadPoolExecutor(1).schedule(new Runnable() { public void run() { if(Calendar.SECOND==30) { JOptionPane.showMessageDialog(nul
new ScheduledThreadPoolExecutor(1).schedule(new Runnable() {
public void run() {
if(Calendar.SECOND==30)
{
JOptionPane.showMessageDialog(null, "Hola Amigo");
}
}
}, 1, TimeUnit.SECONDS);
我应该尝试刷新页面吗?请帮助…您正在检查一个固定的常量值
日历。秒(13
)等于30
。显然,这永远不会是真的,因此对话框永远不会出现。您需要在日历
实例中检查此字段
另外,使用调度
意味着执行器线程只运行一次。使用scheduleAtFixedRate
此外,您还需要在EDT
中调用showMessageDialog
,以确保调用不会阻止执行器
线程
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秒调用一次执行器服务,而不是重复检查当前秒数,则可以调用
scheduler.scheduleAtFixedRate(myRunnable, 1, 30, TimeUnit.SECONDS);