-
Notifications
You must be signed in to change notification settings - Fork 0
Home
fybug edited this page Jun 12, 2025
·
18 revisions
[画像:Icon]
请导入其 jar 文件,文件在 发行版 或项目的 jar 文件夹下可以找到。
发行版中可以看到全部版本
项目下的 jar 文件夹是当前最新的每夜版
接着根据自己的环境进行导入
具体导入方法请查 百度 或 google
public final SyLock lock = new ObjLock(); public static void main(String[] args) { // 尝试申请读锁 lock.read(() -> { // 并发域代码内容 return null; // 可选择是否返回 }); // 尝试申请写锁 lock.write(() -> { // 并发域代码内容 return null; // 可选择是否返回 }); }
以上即为核心用法,将需要并发处理的代码通过一个tryRunnable接口包起来。
启用并发管理以及停止并发管理部分的的代码由本工具封装,直接通过上述代码的方式传入需要运行的内容即可
通过 PDUtilFunctionExpand 包对java的一些标准函数接口拓展了可以抛出异常的封装,具体均表现为带有
try开头
目前一共就三个锁
- ObjLock
- ReLock
- RWLock
均可通过SyLock.new[对应的锁类名]()获取实例,也可以直接通过new创建
可到实现详解中查看更详细的内容
例如
SyLock sy = SyLock.newObjLock()
SyLock sy = new ObjLock()
带try前缀的为尝试获取锁的实现,这意味着不一定能成功获取到锁,但也意味着不需要等待。
所有接口均可有返回数据以及无返回,也有可抛异常的变体。
以下方法仅在使用读写锁的时候会有读写域区别,其他管理方法均无区别。 但还是建议区分好。
read() & tryread() 使用读锁
write() & trywrite() 使用写锁
不同的锁类型还会有内部的专有方法
对应传统锁的用法
public class Main { // 锁对象 private final SyLock LOCK = new ObjLock(); public static void main(String[] args) { // 使用 LOCK.read(() -> { System.out.println("asd"); }); // 不使用 synchronized ( LOCK ){ System.out.println("asd"); } } }
try*** 类型用法,回调中会传入一个参数,代表是否获得锁
public class Main { // 锁对象 private final SyLock LOCK = new ObjLock(); public static void main(String[] args) { // 使用 LOCK.tryread(b -> { if ( b ) { // 成功获得锁 } else { // 没有获得锁 } }, e -> { e.printStackTrace(); }, () -> { System.out.println("finally"); }); // 不使用 synchronized ( LOCK ){ try { System.out.println("asd"); } catch ( IOException e ) { e.printStackTrace(); } finally { System.out.println("finally"); } } } }