轻量级,高可靠,易学习的并发管理工具。
如果你已经熟悉 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:当前发布分支,稳定版的源码
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。