java library JDK 23 Gradle 8.10.2 Apache 2
轻量级,高可靠,易学习的并发管理工具。
如果你已经熟悉 java 的多线程管理,尤其是 ReentrantReadWriteLock 读写锁的话你会更容易学会本工具。
无论内部实现如何,外部接口均提供 **read, **write 方法区分读锁并发域和写锁并发域
public final SyLock lock = SyLock.newObjLock(); public static void main(String[] args) { lock.read(() -> { // 并发域代码内容 return null; // 可选择是否返回 }); }
以上即为核心用法,将需要并发处理的代码通过一个 Runnable 接口包起来。启用并发管理以及停止并发管理部分的的代码由本工具封装,直接通过上述代码的方式传入需要运行的内容即可
SyLock 为该工具的标准接口,同时包含不同实现的基础工厂方法。
可通过接口的工厂方法实例化内部采用不同实现的锁。
public final SyLock lock = SyLock.newObjLock(); public static void main(String[] args) { // 使用 lock.read(() -> { // 并发域代码内容 return null; }); // 不使用 synchronized ( lock ){ // 并发域代码内容 return null; } }
支持使用newCondition()获取Condition对象
public static void main(String[] args) { // 使用 SyLock lock = SyLock.newReLock(); lock.read(() -> { // 并发域代码内容 }); // 不使用 ReentrantLock lock = new ReentrantLock(); try { lock.lock(); // 并发域代码内容 } finally { lock.unlock(); } }
支持通过toread()进行写锁 => 读锁降级
支持使用newReadCondition() newWriteCondition()获取Condition对象
支持通过isLocked() isWriteLocked() isReadLocked()检查是否被占用
public static void main(String[] args) { // 使用 SyLock lock = SyLock.newRWLock(); lock.read(() -> { // 并发域代码内容 }); // 不使用 ReadWriteLock lock = new ReentrantReadWriteLock(); try { lock.readLock().lock(); // 并发域代码内容 } finally { lock.readLock().unlock(); } }
请导入其 jar 文件,文件在 发行版 或项目的 jar 文件夹下可以找到
PDConcurrent.jar 为不包含依赖库的包
PDConcurrent_bin.jar 为包含了依赖库的包
PDConcurrent_all.jar 为包含了依赖库与源码的包
PDConcurrent_sources.jar 为源码包
发行版中可以看到全部版本
项目下的 jar 文件夹是当前最新的每夜版
依赖的同系列项目
可通过 WIKI 或者 doc文档 深入学习本工具
dev-master:当前的开发分支,可以拿到最新的每夜版 jar
releases:当前发布分支,稳定版的源码