首页 > 解决方案 > 如何使用 Reactor 调度程序优雅地关闭?

问题描述

ExecutorServicewith不同awaitTermination()dispose()在 Reactor 中的 Scheduler 中只是shutdownNow()在处理时调用;那么如何优雅地关闭调度程序呢?

有时我们想在所有提交的任务完成后终止我们的 executorService:

// in java
executorService.shutdown();
int  retry =3; 
while(executorService.isTerminated() && retry-- >0){
    executorService.awaitTermination(3, TimieUnit.SECONDS);
}
if(!executorService.isTerminated()){
    executorService.shutdownNow();
}

作为 Reactor 的新手,我关闭调度程序的唯一方法是调用Scheduler.dispose(). 但似乎调度器的实现,例如Scheduler.BoundedElasticScheduler,只是调用executor.shutdownNow()中断内部工作人员,并忽略提交任务的状态。如何优雅地关闭调度程序,直到所有任务完成?

标签: javaschedulerproject-reactorgraceful-shutdown

解决方案


推荐阅读