仅安排一次线程。

时间:2018-12-03 21:05:48

标签: java multithreading thread-safety threadpool

如何修复我的线程以将线程的初始延迟安排为2分钟,而不再进行安排。 (即,仅安排一次)

@Scheduled(fixedDelay = 5000)
public void myJob() {
     Thread.sleep(12000);
}

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用ScheduledExecutorService。它是一种ExecutorService,可以安排命令在给定的延迟后运行或定期执行。

  

ScheduledFuture时间表(可调用,可延迟,长时间单位)

     

创建并执行ScheduledFuture,该计划在   给定延迟。

     

可调用-要执行的函数
  delay-从现在开始延迟执行的时间
  unit-延迟的时间单位

  ScheduledExecutorService service = null;

    service = Executors.newScheduledThreadPool(1);

    service.schedule(() -> {
        myMethodNameWhichIWantToExecute();
    }, 2, TimeUnit.MINUTES);

    if (service != null) service.shutdown();