Я создаю threadpoolexecutor в бобе Spring, поэтому мне нужно завершить работу этого исполнителя, когда tomcat завершает работу.
public class PersistBO implements InitializingBean {
private ThreadPoolExecutor executer;
public void shutdownExecutor() {
executer.shutdown();
}
@Override
public void afterPropertiesSet() throws Exception {
taskQueue = new LinkedBlockingQueue<Runnable>(queueLength);
executer = new ThreadPoolExecutor(minThread, maxThread, threadKeepAliveTime,
TimeUnit.SECONDS, taskQueue, new ThreadPoolExecutor.DiscardOldestPolicy());
}
Я искал решение в Google и получил результат.То есть добавить отключение в java.lang.runtime.Однако в документации по Java говорится, что java.lang.Runtime # shutdownHook вызывается при выходе из последнего потока, не являющегося демоном.Так что это мертвый замок.Есть ли решение для выключения исполнителя в бобе?