Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java代码,用于动态显示系统日期并发出警报_Java - Fatal编程技术网

Java代码,用于动态显示系统日期并发出警报

Java代码,用于动态显示系统日期并发出警报,java,Java,我正试图编写一个java代码,在一天中的某个特定时间发出警报,但我不知道为什么我失败了(请对我的问题温和一点,因为我对编程一无所知)。我有这个密码 new ScheduledThreadPoolExecutor(1).schedule(new Runnable() { public void run() { if(Calendar.SECOND==30) { JOptionPane.showMessageDialog(nul

我正试图编写一个java代码,在一天中的某个特定时间发出警报,但我不知道为什么我失败了(请对我的问题温和一点,因为我对编程一无所知)。我有这个密码

    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);