![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程池
文章平均质量分 77
EmineWang
计算机专业,资深java开发工程师,从事后端开发、架构方向,热爱技术,热爱分享,愿对你有所帮助,感恩大家的支持,欢迎来信交流~~
展开
-
线程生命周期和状态
当线程被创建以后,它既不是已启动就进入执行状态,也不是一直处于执行状态。线程一共有 6 种状态,新建(NEW)、运行状态(RUNNABLE,这里面包含了就绪状态) 、阻塞(BLOCKED)、等待(WAITING)、超时等待状态(TIMED_WAITING) 、终止(TERMINATED) public static enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_W原创 2021-03-17 16:12:28 · 167 阅读 · 0 评论 -
线程池配置参数详解案例
目录:自定义一个线程池newFixedThreadPoolnewCachedThreadPool设置单任务线程池1.自定义一个线程池APIThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue workQueue)c...原创 2019-03-02 04:03:21 · 8427 阅读 · 1 评论 -
线程池源码分析
文章目录ThreadPoolExecutor.java线程池状态addWorkerWorker 类说明runWorker 方法getTaskprocessWorkerExit线程回收tryTerminate()finalize()线程池中的线程初始化小知识ThreadPoolExecutor.java public void execute(Runnable command) { if (command == null) throw new NullPoi原创 2021-12-28 14:59:57 · 860 阅读 · 0 评论 -
线程池中的线程是如何超时自动销毁的?
worker 线程会从阻塞队列中获取需要执行的任务,这个方法不是简单的 take 数据,我们来分析下他的源码实现你也许好奇是怎样判断线程有多久没有活动了,是不是以为线程池会启动一个监控线程,专门监控哪个线程正在偷懒?想太多,其实只是在线程从工作队列 poll 任务时,加上了超时限制,如果线程在 keepAliveTime 的时间内 poll 不到任务,那我就认为这条线程没事做,可以干掉了 private Runnable getTask() { boolean timedOut原创 2021-03-17 17:01:27 · 2649 阅读 · 0 评论