From 76d25a451877242fa24cf5635b8c661fad4b9bb7 Mon Sep 17 00:00:00 2001 From: fybug <1006291762@qq.com> Date: Wed, 6 Apr 2022 14:37:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 73 +++++++++++++++++++++++++++++++++++++++++++ jar/PDConcurrent.jar | Bin 11076 -> 11076 bytes 2 files changed, 73 insertions(+) diff --git a/README.md b/README.md index 792d25c..a3d884f 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,79 @@ 使用接口将运行的代码传入并发域中,可通过接口抛出异常与返回数据,亦可将 try 块中的代码通过接口的方式插入并发域中的 try 块中。 +## 统一标准 + +如果你已经熟悉 java 的多线程管理,尤其是 ReentrantReadWriteLock 读写锁的话你会更容易学会本工具。 + +本工具采用读写锁标准,无论内部实现如何,外部接口均提供 **read, **write 方法区分读锁并发域和写锁并发域 + +### \> > 基础使用示例 +```java +// 尝试申请读锁 +SyLock.newObjLock().read(() -> { + // 并发域代码内容 + [return null;]? // 可选择是否返回 +}); + +// 尝试申请写锁 +SyLock.newObjLock().write(() -> { + [return null;]? +}); +``` + +> SyLock 为该工具的标准接口,同时包含不同实现的基础工厂方法。 + +## 锁变形示例 + +可通过接口的工厂方法实例化内部采用不同实现的锁。 + +### \> > synchronized 锁 +```java +// 使用 +SyLock.newObjLock().read(() -> { + // 并发域代码内容 +}); + +// 不使用 +synchronized ( new Object() ){ + // 并发域代码内容 +} +``` + +### \> > ReentrantLock 锁 +```java +// 使用 +SyLock.newReLock().read(() -> { + // 并发域代码内容 +}); + +// 不使用 +ReentrantLock lock = new ReentrantLock(); +try { + lock.lock(); + // 并发域代码内容 +} finally { + lock.unlock(); +} +``` + +### \> > ReadWriteLock 锁 +```java +// 使用 +SyLock.newRWLock().read(() -> { + // 并发域代码内容 +}); + +// 不使用 +ReadWriteLock lock = new ReentrantReadWriteLock(); +try { + lock.readLock().lock(); + // 并发域代码内容 +} finally { + lock.readLock().unlock(); +} +``` + ## 使用方法 请导入其 `jar` 文件,文件在 **发行版** 或项目的 **jar** 文件夹下可以找到 diff --git a/jar/PDConcurrent.jar b/jar/PDConcurrent.jar index 0172f8b1072aef824255e6a31739b2b1ed4abbdd..17e2c3af6d463ce216d5386341b82748aa62fdb8 100644 GIT binary patch delta 338 zcmX>Sb|j21z?+#xgn@&DgJD8RTgXJdgBl>30ST}H*=dzYrRn-0wOkAg91IY(-_=+^ zY9}i)8bcTnjOJj*=E;odj1ZxNtOlF)n6;63y(|V0-sXd>ehBf&b2Rxj2eL~;Sb|j21z?+#xgn@&DgTbr7Hh3c6K@AYifCSip?6k_H(sX^0S}q0#4hD$Y?`kX{ zwUZSYjUkK(MspTVpvdOQjOmPE*5re%2AlPmwUKzeECvwX=7X$$2=U2tH2F3MvP(nd z3OHu7Ld@dl%VC4C>P3>-A*S;4X>R71$>M@oTdSrDVJuT~f-v5w89*2c>Sho|l)5v7 yu~6L|V#XWwC