
线程池
一天是程序人
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用ArrayBlockingQueue实现一个生产者消费者模型
提供一个demo,仅供参考 public class ArrayBlockingQueueTestService { // 自定义线程池 static ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(2000, 5000, 100, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(1000原创 2022-05-22 09:47:35 · 472 阅读 · 0 评论 -
ScheduledThreadPoolExecutor实现延时及定时任务的步骤
ScheduledThreadPoolExecutor提供的两个方法来完成延迟及定时执行任务 scheduleAtFixedRate及scheduleWithFixedDelay 大致执行步骤: 1)创建task任务 2)将任务加入到延迟队列 3)启用线程通过getTask方法从队列中获取任务 4)延迟队列中的take方法获取任务时,会根据等待时间阻塞任务; 针对scheduleAtFixedRate源码分析: public ScheduledFuture<?> schedul原创 2022-05-21 20:04:20 · 3434 阅读 · 0 评论 -
线程池execute执行流程源码分析
在分析源码之前需要先介绍一些基本概念:线程池的几种创建方法及线程池中一些重要变量,有基础的可以跳过,直接从第3步开始看源码分析。 1、线程池主要有四种创建方方法: Executor提供的三种静态方法: // 使用核心线程及同步队列,效率高,但是消耗CPU ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); // 使用指定线程数及链表队列,效率不太高,大量并发会造成内存溢出 ExecutorService f...原创 2022-05-12 17:11:38 · 769 阅读 · 0 评论