zl程序教程

您现在的位置是:首页 >  其他

当前栏目

为ExecutorService增加shutdown hook详解编程语言

编程语言 详解 增加 hook shutdown ExecutorService
2023-06-13 09:20:45 时间
public class ShutdownHook { 

 private static final ShutdownHook INSTANCE = new ShutdownHook(); 

 private List ExecutorService executorServices = Lists.newArrayList(); 

 private AtomicBoolean closed = new AtomicBoolean(false); 

 public static ShutdownHook getInstance() { 

 return INSTANCE; 

 private ShutdownHook() { 

 Runtime.getRuntime().addShutdownHook(new Thread() { 

 @Override 

 public void run() { 

 shutdown(); 

 }); 

 @PreDestroy 

 public void shutdown() { 

 if (!closed.compareAndSet(false, true)) { 

 return; 

 for (ExecutorService executorService : executorServices) { 

 tryShutdownNow(executorService); 

 private void tryShutdownNow(ExecutorService executorService) { 

 try { 

 executorService.shutdownNow(); 

 } catch (Throwable e) { 

 //ignore logger maybe has been destroyed 

 try { 

 executorService.awaitTermination(1, TimeUnit.SECONDS); 

 } catch (InterruptedException e) { 

 //ignore logger maybe has been destroyed 

 /** 

 * 注册executorService 

 * @param executorService 

 public ExecutorService register(ExecutorService executorService) { 

 this.executorServices.add(executorService); 

 return executorService; 

}

 

15889.html

cjava