Java 当grails中的日期发生变化时,计时器任务执行了很多次

Java 当grails中的日期发生变化时,计时器任务执行了很多次,java,grails,grails-2.0,timertask,Java,Grails,Grails 2.0,Timertask,我正在使用Grails2.4.2。我试图在每分钟自动打印一条文本。为此,我在谷歌上搜索了一些,并用日历实例尝试TimerTask。当我运行应用程序时,它工作正常。但是如果我改变了我机器的日期,那么它会打印很多次。但我想要的是,尽管我更改了机器日期,但它每分钟只打印一次。谁能帮我一下吗?!!!下面是我在BootStrap.groovy文件中的尝试: 我的BootStrap.groovy文件>>> class BootStrap { def init = { servletContext

我正在使用Grails2.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)
见:
我不明白为什么要传递分钟变量

每分钟打一次定期电话就足够了:

new Timer().scheduleAtFixedRate(task, 0, oneMinuteInMs)
见: