线程池
文章平均质量分 64
Good LA
这个作者很懒,什么都没留下…
展开
-
趣聊线程池ThreadPoolExecutor
问题咱们先聊三个问题,带着问题看源码:线程池如何保持核心线程不消亡?如果核心线程数量为0,新的任务先入队还是直接运行?最终线程池是否会走向消亡?允许核心线程超时,影响点在哪?.示例自定义线程池class MyThreadPool extends ThreadPoolExecutor { public MyThreadPool(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,原创 2022-02-17 14:49:18 · 1222 阅读 · 0 评论 -
线程池(四)
ScheduledThreadPoolExecutor具备延迟执行能力的线程池,任务队列使用无界的DelayQueue。从以下几个方法来看窥探ScheduledThreadPoolExecutor。ScheduledThreadPoolExecutor(int corePoolSize)构造器直接调用ScheduledThreadPoolExecutor构造器,由于DelayedWorkQueue是无界的,因此ScheduledThreadPoolExecutor只有coreSize个线程数有效,其他原创 2021-04-15 00:54:42 · 213 阅读 · 1 评论 -
线程池(三)
概述这里聊几个ThreadPoolExecutor涉及到的两个关键的方法。1. void shutdown()2. List shutdownNow()shutdown()执行线程池的关闭操作,此时不会接收新的任务,但是会执行完任务队列的任务。public void shutdown() { final ReentrantLock mainLock = this.mainLock; mainLock.lock(); try {原创 2021-04-13 23:39:41 · 98 阅读 · 2 评论 -
线程池(二)
ThreadPoolExecutor线程池执行器,内部主要封装了一个线程池和拒绝策略,重点看看它默认的线程工厂和拒绝策略。public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,原创 2021-04-13 22:48:11 · 145 阅读 · 0 评论 -
线程池(一)
线程池的继承结构结合源码理解线程池核心接口和类Executor线程池顶层接口,只定义了一个void execute(Runnable command);方法,拥有执行执行线程任务的能力。ExecutorService拓展了Executor的功能,定义了比如执行所有的任务、执行任一个任务、关闭某个任务等功能,重点是引入了Future和Callable的相关功能,支持获取异步结果,也支持超时机制。AbstractExecutorServiceExecutorService的抽象实现类,采用模板方原创 2021-04-09 00:36:32 · 132 阅读 · 0 评论