
线程池
文章平均质量分 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 · 1235 阅读 · 0 评论 -
线程池(四)
ScheduledThreadPoolExecutor 具备延迟执行能力的线程池,任务队列使用无界的DelayQueue。从以下几个方法来看窥探ScheduledThreadPoolExecutor。 ScheduledThreadPoolExecutor(int corePoolSize) 构造器直接调用ScheduledThreadPoolExecutor构造器,由于DelayedWorkQueue是无界的,因此ScheduledThreadPoolExecutor只有coreSize个线程数有效,其他原创 2021-04-15 00:54:42 · 234 阅读 · 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 · 104 阅读 · 2 评论 -
线程池(二)
ThreadPoolExecutor 线程池执行器,内部主要封装了一个线程池和拒绝策略,重点看看它默认的线程工厂和拒绝策略。 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,原创 2021-04-13 22:48:11 · 162 阅读 · 0 评论 -
线程池(一)
线程池的继承结构 结合源码理解线程池核心接口和类 Executor 线程池顶层接口,只定义了一个void execute(Runnable command);方法,拥有执行执行线程任务的能力。 ExecutorService 拓展了Executor的功能,定义了比如执行所有的任务、执行任一个任务、关闭某个任务等功能,重点是引入了Future和Callable的相关功能,支持获取异步结果,也支持超时机制。 AbstractExecutorService ExecutorService的抽象实现类,采用模板方原创 2021-04-09 00:36:32 · 145 阅读 · 0 评论