线程池实现原理ThreadPoolExecutor

线程池实现原理

具体需要看ThreadPoolExecutor内部实现:

	//阻塞队列
	private final BlockingQueue workQueue;
	//互斥锁
	private final ReentrantLock mainLock = new ReentrantLock();
	// 线程集合 一个对应的线程
	private final HashSet workers = new HashSet<>();
    //终止条件
    private final Condition termination = mainLock.newCondition();
    //线程池数量曾到达的最大值
    private int largestPoolSize;
    //已完成线程数量
    private long completedTaskCount;
    //用户创建线程
    private volatile ThreadFactory threadFactory;
    //拒绝策略
    private volatile RejectedExecutionHandler handler;
    //线程池维护线程所允许的空闲时间
    private volatile long keepAliveTime;
    //判断线程是否存活
    private volatile boolean allowCoreThreadTimeOut;
    //线程池维护线程的核心线程数量
    private volatile int corePoolSize;
    //线程池最大线程数量
    private volatile int maximumPoolSize;
    
	public ThreadPoolExecutor(int corePoolSize,
	                          int maximumPoolSize,
	                          long keepAliveTime,
	                          TimeUnit unit,
	                          BlockingQueue workQueue)
	corePoolSize:核心线程数
	maximumPoolSize:最大线程数
	keepAliveTime:线程存活时间(在corePore<*

流程图:

线程池实现原理ThreadPoolExecutor_第1张图片

步骤详解:

Executor(runable) > 核心线程数 > 队列 > 最大线程数 > 阻塞

你可能感兴趣的:(Java基础)