服务器环境中的Guava AbstractScheduledService

时间:2015-03-16 11:27:36

标签: java thread-safety guava scheduler

在应用程序服务器关闭时,关闭服务器环境中运行的AbstractScheduledService(例如Tomcat)的首选方法是什么?我是否必须为此明确注册服务器侦听器,或者有没有办法将服务线程指定为守护进程?

1 个答案:

答案 0 :(得分:1)

管理Service(包括/特别是在服务器中)的标准方法是使用ServiceManager。将所有服务添加到ServiceManager,然后在启动时startAsync()管理员,并在关机时添加stopAsync()。你需要一个服务器监听器。

可以通过覆盖executor()的{​​{1}}方法并返回使用产生守护程序线程的AbstractScheduledService的执行程序来将服务线程指定为守护程序,但请注意,如果如果/当ThreadFactory本身停止时,执行程序将不会自动关闭(尽管您可以像执行默认的AbstractScheduledService实现那样添加一个将执行此操作的服务的侦听器)

那就是说,我建议executor()加上服务器监听器。该方法应确保有序关闭您的服务。