1. /**
    2. * Close executor service.
    3. */
    4. public void close() {
    5. // 关闭这里采用异步关闭,单独有一个线程的线程池执行如下。
    6. SHUTDOWN_EXECUTOR.execute(new Runnable() {
    7. @Override
    8. public void run() {
    9. try {
    10. // 先关闭业务线程
    11. executorService.shutdown();
    12. // 再次关闭线程池,但是等待5秒,如果关闭了,则返回,否则执行下面的
    13. while (!executorService.awaitTermination(5, TimeUnit.SECONDS)) {
    14. // 强制关闭资源
    15. executorService.shutdownNow();
    16. }
    17. } catch (final InterruptedException ex) {
    18. Thread.currentThread().interrupt();
    19. }
    20. }
    21. });
    22. }