/**
* Close executor service.
*/
public void close() {
// 关闭这里采用异步关闭,单独有一个线程的线程池执行如下。
SHUTDOWN_EXECUTOR.execute(new Runnable() {
@Override
public void run() {
try {
// 先关闭业务线程
executorService.shutdown();
// 再次关闭线程池,但是等待5秒,如果关闭了,则返回,否则执行下面的
while (!executorService.awaitTermination(5, TimeUnit.SECONDS)) {
// 强制关闭资源
executorService.shutdownNow();
}
} catch (final InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
});
}