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