本文共 704 字,大约阅读时间需要 2 分钟。
java中线程池的三个方法shutdown()
、shutdownNow()
和awaitTermination()
shutdown
:
shutdownNow
:
awaitTermination(long timeOut, TimeUnit unit)
:
三者的异同:
shutdown
与shutdownNow
之后都拒绝提交任务,awaitTermination
可以继续提交任务。awaitTermination()
是阻塞的,返回结果是线程池是否已停止(true/false)shutdown/Now
不阻塞。了解完以上这些概念,现在就是在spring中的什么时机进行这些方法的调用呢?
spring的容器在关闭的时候会发布一个关闭事件,所以我们可以监听spring容器关闭事件,在接收到事件的时候执行优雅关闭。如果你使用的是spring的线程池也就是@Async注解那么你可以直接在配置中指定优雅关闭即可
executor.setWaitForTasksToCompleteOnShutdown(true);executor.setAwaitTerminationSeconds(60)
转载地址:http://lpkfb.baihongyu.com/