CompletionService - 批量执行异步任务

CompletionService 的实现原理也是内部维护了一个阻塞队列,当任务执行结束就把任务的执行结果加入到阻塞队列中,不同的是 CompletionService 是把任务执行结果的 Future 对象加入到阻塞队列中

Read more   2021/01/08 posted in  并发工具

CompletableFuture 异步编程

异步化是并发实施的的基础吗,,利用多线程优化性能这个核心方案得以实施的基础,Java 在 1.8 版本提供了 CompletableFuture 来支持异步编程,CompletableFuture 有可能是你见过的最复杂的工具类

Read more   2021/01/08 posted in  并发工具

Executor

目前线程池的使用模式是生产者-消费者模式,线程池的使用方是生产者,线程池本身是消费者

Read more   2021/01/08 posted in  并发工具

无锁工具类

对于简单的原子性问题,JDK包装了一系列的实现原子类,相对于互斥方案,无锁类性能高,解决了互斥问题,没有加锁和解锁的操作,以及对线程切换的性能损耗

Read more   2021/01/08 posted in  并发工具

并发容器

Read more   2021/01/06 posted in  并发工具

CountDownLatch 和 CyclicBarrier

CountDownLatch允许一个或多个线程等待其他线程完成操作。CyclicBarrier它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行

Read more   2021/01/06 posted in  并发工具

StampedLock

读多写少的场景中,还有没有更快的技术方案,Java 在 1.8 这个版本里,提供了一种叫 StampedLock 的锁,它的性能就比读写锁还要好。

Read more   2021/01/05 posted in  并发工具

ReadWriteLock - 读写锁

针对读多写少,JDK提供了ReadWriteLock,容易使用且性能较好;读写锁允许多个线程读共享变量,只允许一个线程写共享变量,如果一个线程写共享变量时,禁止读线程读共享变量

Read more   2021/01/05 posted in  并发工具

Semaphore

用来控制同时访问特定资源的线程数量,它通过协调线程,合理的使用公共资源

Read more   2021/01/04 posted in  并发工具

队列同步器

队列同步器AbstractQueuedSynchronizer,用来构建锁或其他同步组件的基础框架,使用int变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作

Read more   2020/12/31 posted in  并发工具

Lock & Condition

Java 通过Lock和Condition 两个接口实现管程,Lock解决互斥问题,Condition解决同步问题

Read more   2020/12/31 posted in  并发工具