我正在使用 grails 2.4.2。我正在尝试每分钟自动打印一条文本。为此,我用谷歌搜索了一些并尝试使用日历实例的 TimerTask 。当我运行应用程序时它工作正常。但是,如果我更改机器的日期,那么它会打印很多次。但我想要的是,尽管我更改了机器日期,但每分钟它只会打印一次。谁能帮我解决这个问题吗?!!!这是我在 BootStrap.groovy 文件中的尝试::
我的 BootStrap.groovy 文件 >>>
class BootStrap {
def init = { servletContext ->
int month=0,day=0,hour=0,minute=0,second=0
def task = {
Calendar calendar = Calendar.getInstance();
Date toDay = new Date()
calendar.setTime(toDay);
month = calendar.get(calendar.MONTH)
day = calendar.get(calendar.DAY_OF_MONTH)
hour = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);
second = calendar.get(Calendar.SECOND);
println("Month is >> " + month)
println("Day is >> " + day)
println("Hour is >> " + hour)
println("Minute is >> " + minute)
println("second is >> " + second)
println "executing task"
} as TimerTask
def oneMinuteInMs = 1000 * 60
// Schedule the task
new Timer().scheduleAtFixedRate(task, minute, oneMinuteInMs)
}
def destroy = {
}
}
最佳答案
我不明白你为什么要传递分钟变量。
每分钟重复调用一次就足够了:
new Timer().scheduleAtFixedRate(task, 0, oneMinuteInMs)
关于java - 当 grails 中的日期发生变化时,计时器任务执行了很多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33755620/