并发编程
文章平均质量分 75
MrBlackWhite
越努力越幸运
展开
-
线程池的三种队列区别:SynchronousQueue、LinkedBlockingQueue 和ArrayBlockingQueue
使用方法: 1.SynchronousQueue private static ExecutorService cachedThreadPool = new ThreadPoolExecutor(4, Runtime.getRuntime().availableProcessors() * 2, 0, TimeUnit.MILLISECONDS, new SynchronousQueue<>(), r -> new Thread(r, "ThreadTest")); Synchro转载 2021-01-16 16:10:25 · 648 阅读 · 0 评论 -
线程池的四种创建方式及应用场景(注意仅供demo演示,实际推荐手动创建线程池的方式)
关于三种线程池的三种队列区别:SynchronousQueue、LinkedBlockingQueue 和ArrayBlockingQueue,可以点击链接查看。https://blog.csdn.net/qq_26881739/article/details/80983495 最近线程池用的比较多,感觉挺有意思。在此记录一下,线程池的创建有4种方式; 1 .Executors.newCachedThreadPool(); 构造方法为: public static ExecutorService ne原创 2021-01-16 16:07:20 · 1363 阅读 · 0 评论 -
分析CountDownLatch的实现原理
上一篇通过研究ReentrantLock分析了AQS的独占功能,本文将通过同样是AQS子类的CountDownLatch分析AQS的共享功能。有了前文研究独占功能的基础,再研究共享锁就简单多了。 CountDownLatch的使用 CountDownLatch是同步工具类之一,可以指定一个计数值,在并发环境下由线程进行减1操作,当计数值变为0之后,被await方法阻塞的线程将会唤醒,实现线程间的同步。 public void startTestCountDownLatch() { int th转载 2020-08-05 14:54:21 · 253 阅读 · 0 评论 -
分析ReentrantLock的实现原理
分析Java线程池的创建 分析Java线程池执行原理 分析Java线程池Callable任务执行原理 分析ReentrantLock的实现原理转载 2020-08-05 14:30:10 · 301 阅读 · 0 评论 -
分析Java线程池Callable任务执行原理
上一篇分析了线程池的执行原理,主要关于线程池的生命周期和任务如何在池里创建、运行和终止。不过上次研究的是execute方法,执行的是Runnable任务,它不返回任何值。如果希望任务完成后返回结果,那么需要使用Callable接口,这也是本文要研究的主题。转载 2020-08-05 14:28:24 · 727 阅读 · 0 评论 -
分析Java线程池执行原理
Java并发编程源码分析系列: 分析Java线程池的创建 上一篇已经对线程池的创建进行了分析,了解线程池既有预设的模板,也提供多种参数支撑灵活的定制。 本文将会围绕线程池的生命周期,分析线程池执行任务的过程。 线程池状态 首先认识两个贯穿线程池代码的参数: runState:线程池运行状态 workerCount:工作线程的数量 线程池用一个32位的int来同时保存runState和workerCount,其中高3位是runState,其余29位是workerCount。代码中会反复使用ru.转载 2020-08-05 14:27:13 · 206 阅读 · 0 评论 -
分析Java线程池的创建
分析Java线程池的创建 分析Java线程池执行原理 分析Java线程池Callable任务执行原理 分析ReentrantLock的实现原理 最近在改进项目的并发功能,但开发起来磕磕碰碰的。看了好多资料,总算加深了认识。于是打算配合查看源代码,总结并发编程的原理。 准备从用得最多的线程池开始,围绕创建、执行、关闭认识线程池整个生命周期的实现原理。后续再研究原子变量、并发容器、阻塞队列、同步工具、锁等等主题。java.util.concurrent里的并发工具用起来不难,但不能仅仅会用,我们要.转载 2020-08-05 14:26:10 · 150 阅读 · 0 评论