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

标签 java grails grails-2.0 timertask

我正在使用 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)

参见: http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html#scheduleAtFixedRate(java.util.TimerTask,%20long,%20long)

关于java - 当 grails 中的日期发生变化时,计时器任务执行了很多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33755620/

相关文章:

java - NoClassDefFoundError com.google.common.collect.Lists

java - 如何包含同一依赖项的两个不同版本?

java - 是否可以使用 Glassfish 应用服务器运行 gRPC?

ShoppingCart 插件的 Grails 问题

Grails:禁用 GSP 中的强制字段验证

grails - 为 Grails 邮件插件生成 HTML 邮件模板的最佳方法是什么?

hibernate - Grails的交易范围?

java - 如何在 NetBeans 中为 GridBagLayout 设置 "columnWeights"和 "rowWeights"?

grails - 使用 grailsLinkGenerator 在 bootstrap.groovy 中生成图像链接

java - Grails 2.3 数据库迁移不起作用?