线程池的状态

 线程池的状态分为:RUNNING, SHUTDOWN, STOP, TERMINATED

  1. RUNNING运行状态:线程池被一旦被创建,就处于RUNNING状态,并且线程池中的
    任务数为0。该状态的线程池会接收新任务,并处理工作队列中的任务。

    ■调用线程池的shutdown()方法,可以切换到SHUTDOWN关闭状态;

    ■调用线程池的shutdownNow()方法,可以切换到STOP停止状态;

  2. SHUTDOWN关闭状态:该状态的线程池不会接收新任务,但会处理工作队列中的任务;
    ■当工作队列为空时,并且线程池中执行的任务也为空时,线程池进入TDNG状态;

  3. STOP停止状态:该状态的线程不会接收新任务,也,不会处理阻塞队列中的任务,而且会中断正在运行的任务:
    ■线程池中执行的任务为空,进入TIDYING状态;

  4. TIDYING整理状态:该状态表明所有的任务已经运行终止,记录的任务数量为O;
    ■terminated()执行完毕,进入TERMINATED状态;

  5. TERMINATED终止状态:线程池已经完全终止,所有的任务均已完成,所有资源已被释放。在这个状态下,线程池不再接受任何新的任务。

Java中,可以通过`ExecutorService`接口的`isShutdown()`和`isTerminated()`方法来判断线程池状态。 `isShutdown()`方法用于判断线程池是否已经关闭。如果线程池已经关闭,则返回`true`;否则返回`false`。 `isTerminated()`方法用于判断线程池中的所有任务是否已经执行完毕并且线程池已经关闭。如果所有任务已经执行完毕并且线程池已经关闭,则返回`true`;否则返回`false`。 以下是一个示例代码,演示了如何判断线程池状态: ```java import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPoolStatusExample { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(5); // 执行任务 for (int i = 0; i < 10; i++) { final int temp = i; executorService.execute(new Runnable() { @Override public void run() { try { Thread.sleep(100); } catch (Exception e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + ", i: " + temp); } }); } // 关闭线程池 executorService.shutdown(); // 判断线程池状态 boolean isShutdown = executorService.isShutdown(); boolean isTerminated = executorService.isTerminated(); System.out.println("线程池是否已经关闭:" + isShutdown); System.out.println("线程池是否已经终止:" + isTerminated); } } ``` 运行以上代码,输出结果如下: ``` pool-1-thread-1, i: 0 pool-1-thread-2, i: 1 pool-1-thread-3, i: 2 pool-1-thread-4, i: 3 pool-1-thread-5, i: 4 pool-1-thread-1, i: 5 pool-1-thread-2, i: 6 pool-1-thread-3, i: 7 pool-1-thread-4, i: 8 pool-1-thread-5, i: 9 线程池是否已经关闭:true 线程池是否已经终止:false ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值