From 07f3fc469b7ad1ce5840c4f6c75d5f4e3d2db20c Mon Sep 17 00:00:00 2001 From: fybug <1006291762@qq.com> Date: Wed, 29 Sep 2021 14:55:01 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E4=B8=BA=20Gradle=206.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2e085df..792d25c 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ![java library](https://img.shields.io/badge/type-Libary-gr.svg "type") ![JDK 14](https://img.shields.io/badge/JDK-14-green.svg "SDK") -![Gradle 6.4.1](https://img.shields.io/badge/Gradle-6.4.1-04303b.svg "tool") +![Gradle 6.5](https://img.shields.io/badge/Gradle-6.5-04303b.svg "tool") ![Apache 2](https://img.shields.io/badge/license-Apache%202-blue.svg "License") -- [Java Doc](https://apidoc.gitee.com/PatternDirClean/PDConcurrent) -- -- Gitee 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 2/4] =?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 Date: Wed, 6 Apr 2022 20:57:01 +0800 Subject: [PATCH 3/4] =?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 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a3d884f..bd4f252 100644 --- a/README.md +++ b/README.md @@ -14,15 +14,13 @@ ------------------------------------------------------------------------------- -## 简介 - -轻量级,高可靠,基于接口代码插入和 java 原生并发管理实现的 java 并发管理工具,可让开发人员省去处理并发的一些细节。 +**专注于单个功能,无附加bug** -接口统一采用读写锁规范,可使用接口中不同的工厂方法,构造内部使用不同并发实现的管理工具。 +## 简介 -使用接口将运行的代码传入并发域中,可通过接口抛出异常与返回数据,亦可将 try 块中的代码通过接口的方式插入并发域中的 try 块中。 +轻量级,高可靠,易学习的并发管理工具。 -## 统一标准 +## 核心用法 如果你已经熟悉 java 的多线程管理,尤其是 ReentrantReadWriteLock 读写锁的话你会更容易学会本工具。 @@ -42,6 +40,8 @@ SyLock.newObjLock().write(() -> { }); ``` +以上即为核心用法,将需要并发处理的代码通过一个 `Runnable` 接口包起来。启用并发管理以及停止并发管理部分的的代码由本工具封装,直接通过上述代码的方式传入需要运行的内容即可 + > SyLock 为该工具的标准接口,同时包含不同实现的基础工厂方法。 ## 锁变形示例 @@ -100,7 +100,7 @@ try { **发行版中可以看到全部版本
项目下的 jar 文件夹是当前最新的每夜版** -可通过 **WIKI** 或者 **doc文档** 查看示例 +可通过 **WIKI** 或者 **doc文档** 深入学习本工具 ## 分支说明 **dev-master**:当前的开发分支,可以拿到最新的每夜版 jar -- Gitee From 81f12f9a50331f5cc1f44fc6ab2f90c327cbed90 Mon Sep 17 00:00:00 2001 From: fybug <1006291762@qq.com> Date: Thu, 7 Apr 2022 11:24:49 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E9=87=8D=E6=96=B0=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E6=AF=8F=E5=A4=9C=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jar/PDConcurrent.jar | Bin 11076 -> 11052 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/jar/PDConcurrent.jar b/jar/PDConcurrent.jar index 17e2c3af6d463ce216d5386341b82748aa62fdb8..af87a47ebd14a0afbb3edf9062482698d11b1931 100644 GIT binary patch delta 637 zcmX>SwkC`>z?+#xgn@&DgMl}?eIjqCN8^#oofSJ70=(HdrYr2^NoQbS$OmGOIxYqV z4hE3A5TF1YumM?Vl}V-P`Y389ep6=#DxIvrXac6g87)Bc=1Ghhj9`HStcIKQn6(j{ zUKRr|XY&D8f4J!6IhuT%1KFh^GWi^HSiz?7@#V6C8FeBl>|o>g__Q|j%VcqZIW=l( zydZbNeK2{wnk87~wVJf#S|k@UGI24${WV!$U7GRYWNUS4u-Zr<@Au>dj57QI-l*yp zs7o^$F-~5{C_nj*IuFEPpinMI$Y`>a21LkHLz?LZ6HrKLvK})ZNLU`^sQ2YynF7K#N5y=9xM$Zjxsl_tc3oj@Tk4xlRO z$ul{4C;x*A^J+;mz2pT8Tk!FK9WTNFkL1Y-KaU1fuS3SLHfBE7&sWf`gbWZgN(VS4x%P=Fq(jAdqxWoy}61p zgApw7i_LIyfd=1Z6=qq4z!{)GGm8>jVDn8@IWTAQFSaNMBb;LnE7*Xu(psAp_?+3` zoCzXU>|i_2N>AYei>9cl@d7Okfjf5cbTvzPkOb_^u2kp2uum4nEH9us1#OTCA`I|I z2>Eeg)fQex28R7WY=EM^6{y}G>^nmZX{HZMlRu~{0RvJBEYu4W@@D}Hoq-Cy1PX0t z1q