线程池原理和实例,线程池的结构和原理

首页 > 经验 > 作者:YD1662022-11-03 06:03:39

addWorker实现

从方法execute的实现可以看出:addWorker主要负责创建新的线程并执行任务,代码实现如下:

线程池原理和实例,线程池的结构和原理(13)

这只是addWoker方法实现的前半部分:

1、判断线程池的状态,如果线程池的状态值大于或等SHUTDOWN,则不处理提交的任务,直接返回;

2、通过参数core判断当前需要创建的线程是否为核心线程,如果core为true,且当前线程数小于corePoolSize,则跳出循环,开始创建新的线程,具体实现如下:

线程池原理和实例,线程池的结构和原理(14)

线程池的工作线程通过Woker类实现,在ReentrantLock锁的保证下,把Woker实例插入到HashSet后,并启动Woker中的线程,其中Worker类设计如下:

1、继承了AQS类,可以方便的实现工作线程的中止操作;

2、实现了Runnable接口,可以将自身作为一个任务在工作线程中执行;

3、当前提交的任务firstTask作为参数传入Worker的构造方法;

线程池原理和实例,线程池的结构和原理(15)

从Woker类的构造方法实现可以发现:线程工厂在创建线程thread时,将Woker实例本身this作为参数传入,当执行start方法启动线程thread时,本质是执行了Worker的runWorker方法。

runWorker实现

线程池原理和实例,线程池的结构和原理(16)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.