ThreadPoolExecutor.shutdown()和shutdownNow()

本文介绍了Java线程池中的两种关闭方式:shutdown()和shutdownNow()。shutdown()将线程池状态设置为SHUTDOWN,不再接受新任务,但允许已添加的任务继续执行直至完成。而shutdownNow()尝试立即停止所有正在执行的任务,并取消尚未开始的任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shutDown() 

    当线程池调用该方法时,线程池的状态则立刻变成SHUTDOWN状态。此时,则不能再往线程池中添加任何任务,否则将会抛出RejectedExecutionException异常。但是,此时线程池不会立刻退出,直到添加到线程池中的任务都已经处理完成,才会退出。 

            shutdownNow() 

     根据JDK文档描述,大致意思是:执行该方法,线程池的状态立刻变成STOP状态,并试图停止所有正在执行的线程,不再处理还在池队列中等待的任务,当然,它会返回那些未执行的任务

 

 

 

ExecutorService mapService

 

try {

          mapService.shutdown(); // Instructs queue to drain.

 

          // Wait for tasks to finish; do not use a time-based timeout.

          // (See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6179024)

          LOG.info("Waiting for map tasks");

          mapService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);

        } catch (InterruptedException ie) {

          // Cancel all threads.

          mapService.shutdownNow();

          throw ie;

 

        }

 

 

参考:

JAVA线程池shutdown和shutdownNow的区别

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值