下面列出了com.google.common.util.concurrent.MoreExecutors#addDelayedShutdownHook ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public AsyncSnapshotPersistence(final DataSource dataSource) {
this.dataSource = dataSource;
COMMITTED_TRANSACTION_ID_BUFFER.add(Lists.<String>newArrayList());
timerExecutor = Executors.newSingleThreadScheduledExecutor(ShardingThreadFactoryBuilder.build("AsyncPersistence"));
MoreExecutors.addDelayedShutdownHook(timerExecutor, 30, TimeUnit.SECONDS);
timerExecutor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
deleteCommittedSnapshots();
}
}, 10, 1000, TimeUnit.MILLISECONDS);
}
public ExecutorEngine(final int executorSize) {
executorService = MoreExecutors.listeningDecorator(new ThreadPoolExecutor(
executorSize, executorSize, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(), new ThreadFactoryBuilder().setDaemon(true).setNameFormat("ShardingJDBC-%d").build()));
MoreExecutors.addDelayedShutdownHook(executorService, 60, TimeUnit.SECONDS);
}
private static ExecutorService createExecutorService(final int executorSize) {
ThreadFactory threadFactory = ShardingThreadFactoryBuilder.build("Saga-%d");
ExecutorService result = executorSize > 0 ? Executors.newFixedThreadPool(executorSize, threadFactory) : Executors.newCachedThreadPool(threadFactory);
MoreExecutors.addDelayedShutdownHook(result, 60, TimeUnit.SECONDS);
return result;
}
public ShardingSphereExecutorService(final int executorSize, final String nameFormat) {
executorService = MoreExecutors.listeningDecorator(getExecutorService(executorSize, nameFormat));
MoreExecutors.addDelayedShutdownHook(executorService, 60, TimeUnit.SECONDS);
}