栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

深耕Java多线程 - 线程池都有哪些状态?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深耕Java多线程 - 线程池都有哪些状态?

线程池总共存在5种状态,定义在ThreadPoolExecutor类中,具体代码如下:

public class ThreadPoolExecutor extends AbstractExecutorService {
    private static final int RUNNING    = -1 << COUNT_BITS;
    private static final int SHUTDOWN   =  0 << COUNT_BITS;
    private static final int STOP       =  1 << COUNT_BITS;
    private static final int TIDYING    =  2 << COUNT_BITS;
    private static final int TERMINATED =  3 << COUNT_BITS;
}

线程池的5种状态具体如下:

(1)RUNNING:线程池创建之后的初始状态,这种状态下可以执行任务。

(2)SHUTDOWN:该状态下线程池不再接受新任务,但是会将工作队列中的任务执行完毕。

(3)STOP:该状态下线程池不再接受新任务,也不会处理工作队列中的剩余任务,并且将会中断所有工作线程。

(4)TIDYING:该状态下所有任务都已终止或者处理完成,将会执行terminated()钩子方法。

(5)TERMINATED:执行完terminated()钩子方法之后的状态。terminated钩子方法在Executor终止时调用,默认实现不执行任何操作

线程池的状态转换规则为:

(1)线程池创建之后状态为RUNNING。

(2)执行线程池的shutdown()实例方法,会使线程池状态从RUNNING转变为SHUTDOWN。

(3)执行线程池的shutdownNow()实例方法,会使线程池状态从RUNNING转变为STOP。

(4)当线程池处于SHUTDOWN状态时,执行其shutdownNow()方法会将其状态转变为STOP。

(5)等待线程池的所有工作线程停止,工作队列清空之后,线程池状态会从STOP转变为TIDYING。

(6)执行完terminated()钩子方法之后,线程池状态从TIDYING转变为TERMINATED。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760481.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号