代码之家  ›  专栏  ›  技术社区  ›  tkruse

在Spring应用程序中安全使用jdk ScheduledExecutorService

  •  0
  • tkruse  · 技术社区  · 6 年前

    在简单的java应用程序中,需要关闭ExecutorServices以便应用程序终止,例如:

        public static void main(String[] args) throws StoreException {
            final ExecutorService executorService = Executors.newSingleThreadExecutor();
            executorService
                    .submit((Callable<Void>) () -> {
                        Thread.sleep(2000);
                        System.out.println("parallel");
                        return null;
                     });
          // JVM does not shutdown unless calling executorService.shutDown()
          // executorService.shutDown();
        }
    

    另请参见 Reason for calling shutdown() on ExecutorService

    那么在服务器应用程序(例如,使用Spring)中,如果有任何类创建这样的重复任务,会发生什么情况:

    public class MyClass {
    
        public MyClass() {
            ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
            scheduledExecutorService
                    .scheduleAtFixedRate(() -> {
                        System.out.println("parallel");
                     }, 2000, 2000, TimeUnit.SECONDS);
        }
    }
    

    我是否需要在应用程序关闭时连接scheduledExecutorService的关闭?还是不得不使用Springs调度工具?

    0 回复  |  直到 6 年前