![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
文章平均质量分 91
heng_zou
这个作者很懒,什么都没留下…
展开
-
CompletionStage及其实现CompletableFuture源码分析
概述CompletionStage直译是完成阶段,如果你发现你有这么一个需求:一个大的任务可以拆分成多个子任务,并且子任务之间有明显的先后顺序或者一个子任务依赖另一个子任务完成的结果时,那么CompletionStage是一个不错的选择,说到底这不就是聚合任务的特色吗?实际上CompletionStage就是实现了将一个大任务分成若个子任务,这些子任务基于一定的并行、串行组合形成任务的不同阶段,CompletionStage接口实现了对这些子任务之间的关系定义,接口方法较多如下:CompletionS原创 2021-06-26 21:59:00 · 2449 阅读 · 0 评论 -
关于ForkJoinPool使用ManagedBlocker防线程阻塞而降低吞吐量的说明
ForkJoinPool适合执行计算密集型且可进行拆分任务并汇总结果(类似MapReduce)的任务,执行这种任务可以充分利用多核处理器优势提高任务处理速度,实际上ForkJoinPool内部的工作窃取队列的高性能(远高于普通线程池的BlockingQueue)也决定其适用于执行大量的简短的小任务。对于IO阻塞型任务,当然可以设置较大的parallelism参数保证并发数防止任务IO阻塞耗时的时候没有空闲工作线程来执行新提交的IO阻塞任务导致CPU空闲,从而线程池的吞吐率不高,参见下方例子,例子中创建30原创 2021-06-24 19:45:12 · 4846 阅读 · 0 评论 -
AQS实现之Semaphore、CountDownLatch、CyclicBarrier分析
对基于AQS的一些线程并发工具的分析SemaphoreCountDownLatchCyclicBarrierCyclicBarrier等待入口方法:awaitSemaphoreSemaphore维持一组信号量,信号量的大小代表线程并发上限,超过上限后线程将被阻塞直到其它线程释放信号,该类可用于控制并发大小,详见下面例子,例子中定义了一个持有3个信号两的Semaphore,同时启动12个线程去竞争这个三个信号两,竞争成功后打印提示信息package com.test.sync;import lomb原创 2021-05-24 22:31:03 · 165 阅读 · 0 评论 -
Java并发之AQS源码分析ReentranLock、ReentrantReadWriteLock、Condition
基于AQS的重入锁和读写锁的源码分析基本概念说明锁的基本原理思考测试环境实现方案1实现方案2基本概念说明AQS:全称AbstractQueuedSynchronizer,是jdk提供的一个并发框架,位于java.util.concurrent包下,该框架已实现独享锁、共享锁的大部分逻辑,开发者只需要少量变成编码即可实现相应的读写锁和共享锁,同时可基于该框架实现公平锁和非公平锁。jdk已经提供了读写锁和共享锁的具体实现,分别是同样位于Java.util.concurrent包下的ReentrantLoc原创 2021-05-22 03:03:47 · 272 阅读 · 1 评论