scheduleWithFixedRate在grails项目中不起作用

scheduleWithFixedRate在grails项目中不起作用,grails,concurrency,cron,java-8,Grails,Concurrency,Cron,Java 8,已知CriticalTask类继承自java.util.TimerTask类 CriticalTask类的run方法内部的代码工作正常。但是,调度不起作用 我不知道这是web.xml配置问题还是其他问题 假定此作业每分钟启动一次 还应告知我使用: 爪哇8 grails 2.4.3 如果您使用的是ScheduledExecutorService,您不需要TimerTask,事实上,使用TimerTask,由于其混乱的结果,可能会适得其反。它可以工作,因为TimerTask实现了Runnable

已知
CriticalTask
类继承自
java.util.TimerTask

CriticalTask类的run方法内部的代码工作正常。但是,调度不起作用

我不知道这是web.xml配置问题还是其他问题

假定此作业每分钟启动一次


还应告知我使用:
  • 爪哇8
  • grails 2.4.3

如果您使用的是
ScheduledExecutorService
,您不需要
TimerTask
,事实上,使用
TimerTask
,由于其混乱的结果,可能会适得其反。它可以工作,因为
TimerTask
实现了
Runnable
,但是除了
run()
之外的所有其他方法都没有意义

也就是说,
cancel()
scheduledExecutionTime()
只有在与类一起使用
TimerTask
时才能工作


该方法返回一个值,其中包含类似的方法,您可以使用这些方法来控制任务。

您必须做出决定。您可以将代码更改为使用返回的
ScheduledFuture
的方法而不是
TimerTask
,或者将其更改为使用
Timer
而不是
Executors.newSingleThreadScheduledExecutor()
。我推荐前者,但我不能对新代码提出建议,因为我不知道您的旧代码。您只展示了如何安排任务(不需要更改),而没有展示使用其他方法将要执行的操作。
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;

class BootStrap {
    def init = { servletContext ->
      def sd =  Executors.newSingleThreadScheduledExecutor()
      sd.scheduleAtFixedRate(new CriticalTask(), 0, 1, TimeUnit.MINUTES)
   }
}