java - java中执行方法检查时间并在特定时间执行方法

标签 java

我正在运行一个 IRC 机器人,它需要在两个设定的时间之间在聊天中回显一条消息,并且每隔几分钟执行一次:

我尝试这样做:

        public void timerTest(int minH,int maxH, int minT){
        boolean b = true;
        boolean timeout = false;
        while(b){
            while(!timeout){
                if(c.get(Calendar.HOUR_OF_DAY) >= minH && c.get(Calendar.HOUR_OF_DAY) <= maxH && c.get(Calendar.MINUTE) % minT == 0){   
                    sendMessage(channel,spam1.getMessage());
                    timeout = true;
                  }
                }
                if(c.get(Calendar.MINUTE)%minT == 1){
                    timeout = false;
                }
            }
        }

我通常想在 2 点到 6 点之间每 15 分钟发送一次垃圾邮件。我尝试将其放入无休止的 while 循环中,但不建议这样做。我寻找 Timer 和 TimerTask 但我不知道如何正确执行它。如果有人愿意解释我如何实现这一目标?

谢谢^^

最佳答案

Java TimerTimerTask 并不真正适合像您这样的复杂调度需求。

我建议查看quartz 。它允许您使用非常强大的 cron 表达式进行调度。我认为类似以下表达式可能有用:

*/15 2-6 * * * ?

关于java - java中执行方法检查时间并在特定时间执行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5283686/

相关文章:

java - android 在不同时间计算的相等日期的毫秒数确实不同

java - 随机数生成器问题

java - Java 中 OS X 上黑暗模式的菜单栏图标

java - 无法正确旋转 3D 点 A 到 B(在 X、Y、Z 轴上)

java - 长数删除第一位 - Fast Way JAVA

java - Java 代码可以判断它是否在应用服务器中吗?

java - PropertySources 中各种源的优先级

java - 通过 Spring Boot 应用程序关闭 Tomcat 日志记录

java - 使用多部分时无法提取表单字段数据——Java、GWT

java - 嵌套 Jackson WRAPPER_OBJECT 的多层