Skip to content

Repository files navigation

Icon

PDConcurrent

java libraryJDK 23Gradle 8.10.2Apache 2


简介

轻量级,高可靠,易学习的并发管理工具。

核心用法

如果你已经熟悉 java 的多线程管理,尤其是 ReentrantReadWriteLock 读写锁的话你会更容易学会本工具。

无论内部实现如何,外部接口均提供 **read, **write 方法区分读锁并发域和写锁并发域

基础使用示例

publicfinalSyLocklock = SyLock.newObjLock();
publicstaticvoidmain(String[] args) {
lock.read(() -> {
// 并发域代码内容returnnull; // 可选择是否返回
});
}

以上即为核心用法,将需要并发处理的代码通过一个 Runnable 接口包起来。启用并发管理以及停止并发管理部分的的代码由本工具封装,直接通过上述代码的方式传入需要运行的内容即可

SyLock 为该工具的标准接口,同时包含不同实现的基础工厂方法。

锁变形示例

可通过接口的工厂方法实例化内部采用不同实现的锁。

synchronized 锁

publicfinalSyLocklock = SyLock.newObjLock();
publicstaticvoidmain(String[] args) {
// 使用lock.read(() -> {
// 并发域代码内容returnnull;
});
// 不使用synchronized ( lock ){
// 并发域代码内容returnnull;
}
}

ReentrantLock 锁

支持使用newCondition()获取Condition对象

publicstaticvoidmain(String[] args) {
// 使用SyLocklock = SyLock.newReLock();
lock.read(() -> {
// 并发域代码内容
});
// 不使用ReentrantLocklock = newReentrantLock();
try {
lock.lock();
// 并发域代码内容
} finally {
lock.unlock();
}
}

ReadWriteLock 锁

支持通过toread()进行写锁 => 读锁降级

支持使用newReadCondition()newWriteCondition()获取Condition对象

支持通过isLocked()isWriteLocked()isReadLocked()检查是否被占用

publicstaticvoidmain(String[] args) {
// 使用SyLocklock = SyLock.newRWLock();
lock.read(() -> {
// 并发域代码内容
});
// 不使用ReadWriteLocklock = newReentrantReadWriteLock();
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:当前发布分支,稳定版的源码


提供bug反馈或建议

About

java并发控制工具

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages