diff --git a/README.md b/README.md index 792d25c4252789c2ae8bdf55d258616c3e52ac63..a3d884fddff4f6882562a8306bb291de3cdf1a6c 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 Binary files a/jar/PDConcurrent.jar and b/jar/PDConcurrent.jar differ