在简单的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调度工具?