JCTools
早在96年就有论文提出了无锁队列的概念,再到后来 Disruptor,高性能已得到生产的验证。此处介绍的 Jctools 中的高性能队列,其性能丝毫不输于 Disruptor。
JCTools (Java Concurrency Tools) 提供了一系列非阻塞并发数据结构(标准 Java 中缺失的),当存在线程争抢的时候,非阻塞并发数据结构比阻塞并发数据结构能提供更好的性能。
JCTools 是一个开源工具包,在 Apache License 2.0 下发布,并在 Netty、Rxjava 等诸多框架中被广泛使用。
JCTools 的开源 Github 仓库:https://github.com/JCTools/JCTools
在 Maven 中引入 JCtools jar 包就能使用 JCTools 了:
<dependency>
<groupId>org.jctools</groupId>
<artifactId>jctools-core</artifactId>
<version>3.0.0</version>
</dependency>
JCTools 中主要提供了 Map 以及 Queue 的非阻塞并发数据结构:
非阻塞 Map
- ConcurrentAutoTable(后面几个map/set结构的基础)
- NonBlockingHashMap
- NonBlockingHash