diff --git a/README.md b/README.md index d71eb39f1ee3f312e5b4ab5a7aba2077cde934e7..49817e3c447a20638c7b4dac9a8056fbc1b74d9c 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ 本工具采用读写锁标准,无论内部实现如何,外部接口均提供 **read, **write 方法区分读锁并发域和写锁并发域 -### \> > 基础使用示例 +### 基础使用示例 ```java public static void main(String[] args) { var lock = SyLock.newObjLock(); @@ -45,7 +45,7 @@ public static void main(String[] args) { 可通过接口的工厂方法实例化内部采用不同实现的锁。 -### \> > synchronized 锁 +### synchronized 锁 ```java public static void main(String[] args) { // 使用 @@ -62,7 +62,7 @@ public static void main(String[] args) { ``` -### \> > ReentrantLock 锁 +### ReentrantLock 锁 ```java public static void main(String[] args) { // 使用 @@ -82,7 +82,7 @@ public static void main(String[] args) { } ``` -### \> > ReadWriteLock 锁 +### ReadWriteLock 锁 ```java public static void main(String[] args) { // 使用 diff --git a/build.gradle b/build.gradle index 7fad4d0c2c7dd5b1d2699d64abd737d83a456e86..37a7b5ac91038607335cd537f1e9c310b61260f4 100644 --- a/build.gradle +++ b/build.gradle @@ -37,88 +37,79 @@ repositories { } dependencies { + // 本地依赖 implementation fileTree(dir: 'lib', includes: ['*.jar']) + // 注释包 compileOnly "jakarta.validation:jakarta.validation-api:+" compileOnly "jakarta.annotation:jakarta.annotation-api:+" + // lombok compileOnly 'org.projectlombok:lombok:+' annotationProcessor 'org.projectlombok:lombok:+' - // testImplementation "junit:junit" + // 注释包 testCompileOnly "jakarta.validation:jakarta.validation-api:+" testCompileOnly "jakarta.annotation:jakarta.annotation-api:+" + // lombok testCompileOnly "org.projectlombok:lombok:+" testAnnotationProcessor "org.projectlombok:lombok:+" + // testImplementation "junit:junit" } test { useJUnitPlatform() } -task PDConcurrent_bin(type: Jar) { - destinationDirectory = file('jar') +/** 清单文件内容 */ +tasks.withType(Jar).configureEach { manifest { attributes('Manifest-Version': '1.0', 'Built-By': 'fybug/风雨bu改', 'Build-Jdk-Spec': 23, 'Bundle-Description': 'java并发控制工具', 'Bundle-Name': 'PDConcurrent', - 'Bundle-DocURL': 'https://apidoc.gitee.com/fybug/PDConcurrent/', + // 'Bundle-DocURL': 'https://apidoc.gitee.com/fybug/PDConcurrent/', 'Bundle-Vendor': 'IntelliJ IDEA', 'Bundle-Version': version, 'Bundle-License': 'https://www.apache.org/licenses/LICENSE-2.0', 'Created-By': 'Gradle 8.10.2') } +} + +/** 编译包 */ +tasks.register('PDConcurrent_bin', Jar) { + dependsOn classes + destinationDirectory = file('jar') archiveFileName = 'PDConcurrent_bin.jar' + archiveClassifier = '' // 打包编译输出 from sourceSets.main.output } -task PDConcurrent_all(type: Jar) { +/** 源码包 */ +tasks.register('PDConcurrent_sources', Jar) { + dependsOn classes + destinationDirectory = file('jar') + archiveFileName = 'PDConcurrent_sources.jar' + archiveClassifier = 'sources' + // 打包源码 + from sourceSets.main.allSource +} + +tasks.register('PDConcurrent_all', Jar) { + dependsOn classes destinationDirectory = file('jar') - manifest { - attributes('Manifest-Version': '1.0', - 'Built-By': 'fybug/风雨bu改', - 'Build-Jdk-Spec': 23, - 'Bundle-Description': 'java并发控制工具', - 'Bundle-Name': 'PDConcurrent', - 'Bundle-DocURL': 'https://apidoc.gitee.com/fybug/PDConcurrent/', - 'Bundle-Vendor': 'IntelliJ IDEA', - 'Bundle-Version': version, - 'Bundle-License': 'https://www.apache.org/licenses/LICENSE-2.0', - 'Created-By': 'Gradle 8.10.2') - } archiveFileName = 'PDConcurrent_all.jar' + archiveClassifier = 'all' // 打包编译输出 from sourceSets.main.output - // 打包源码 - from sourceSets.main.allSource from { // implementation 相关的引入解压并打包入新的jar中 configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } } -task PDConcurrent_sources(type: Jar) { - destinationDirectory = file('jar') - manifest { - attributes('Manifest-Version': '1.0', - 'Built-By': 'fybug/风雨bu改', - 'Build-Jdk-Spec': 23, - 'Bundle-Description': 'java并发控制工具', - 'Bundle-Name': 'PDConcurrent', - 'Bundle-DocURL': 'https://apidoc.gitee.com/fybug/PDConcurrent/', - 'Bundle-Vendor': 'IntelliJ IDEA', - 'Bundle-Version': version, - 'Bundle-License': 'https://www.apache.org/licenses/LICENSE-2.0', - 'Created-By': 'Gradle 8.10.2') - } - archiveFileName = 'PDConcurrent_sources.jar' - // 打包源码 - from sourceSets.main.allSource -} - -task release { +tasks.register('release') { dependsOn clean dependsOn PDConcurrent_bin dependsOn PDConcurrent_sources diff --git a/jar/PDConcurrent_bin.jar b/jar/PDConcurrent_bin.jar index 27dd86ee8081117386b9cd6d9a9f3c06e787a8ca..3e78b12bf035f2071850f0ea33c68fc1d9007403 100644 Binary files a/jar/PDConcurrent_bin.jar and b/jar/PDConcurrent_bin.jar differ diff --git a/jar/PDConcurrent_sources.jar b/jar/PDConcurrent_sources.jar index ea47ab642fe7fe7c73d815ec53d8dfee75682fae..ecd6bd634795df52c186da40841d6dc8dc4d9469 100644 Binary files a/jar/PDConcurrent_sources.jar and b/jar/PDConcurrent_sources.jar differ diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 96b1c000536183c825b8ee1de37b9e0ac3048bd0..0000000000000000000000000000000000000000 --- a/pom.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - 4.0.0 - - fybug.nulll - PDConcurrent - 0.0.2 - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.0.0 - - -Xdoclint:none - - - - attach-javadocs - - jar - - - - - - - \ No newline at end of file diff --git a/src/main/java/fybug/nulll/pdconcurrent/RWLock.java b/src/main/java/fybug/nulll/pdconcurrent/RWLock.java index bbd33e30dd6fbaedd6122c0327b799d651241729..6cc72556a638afa7185c26768a56a68fd424a53b 100644 --- a/src/main/java/fybug/nulll/pdconcurrent/RWLock.java +++ b/src/main/java/fybug/nulll/pdconcurrent/RWLock.java @@ -297,6 +297,8 @@ class RWLock implements SyLock { /** * 获取读锁{@link Condition} * + * @return {@link ReentrantReadWriteLock.ReadLock}的{@link Condition} + * * @see ReentrantReadWriteLock.ReadLock#newCondition() * @since 0.1.0 */ @@ -307,6 +309,8 @@ class RWLock implements SyLock { /** * 获取写锁{@link Condition} * + * @return {@link ReentrantReadWriteLock.WriteLock}的{@link Condition} + * * @see ReentrantReadWriteLock.WriteLock#newCondition() * @since 0.1.0 */ diff --git a/src/main/java/fybug/nulll/pdconcurrent/ReLock.java b/src/main/java/fybug/nulll/pdconcurrent/ReLock.java index 02deb448788e21a8a8c7c03dd46376a019971f14..fbf385b0216d325b47289a4c5b68c9c6e0cc6a56 100644 --- a/src/main/java/fybug/nulll/pdconcurrent/ReLock.java +++ b/src/main/java/fybug/nulll/pdconcurrent/ReLock.java @@ -164,6 +164,8 @@ class ReLock implements SyLock { /** * 获取{@link Condition} * + * @return {@link ReentrantLock}的{@link Condition} + * * @see ReentrantLock#newCondition() */ @NotNull diff --git a/src/main/java/fybug/nulll/pdconcurrent/SyLock.java b/src/main/java/fybug/nulll/pdconcurrent/SyLock.java index 1d7929ac62976b1efc7460b38e0153a5c10c542f..4526b1a73055d9634db49dd2d2df752e1ac2fc45 100644 --- a/src/main/java/fybug/nulll/pdconcurrent/SyLock.java +++ b/src/main/java/fybug/nulll/pdconcurrent/SyLock.java @@ -139,6 +139,8 @@ interface SyLock { * * @return 回调返回的内容,遇到异常不返回 * + * @throws Exception 异常类型根据实际运行时回调抛出决定 + * @throws Exception 异常类型根据实际运行时回调抛出决定 * @implSpec 如果有传入 {@code finaby} 回调则返回值由{@code finaby}主导,传入{@code finaby}的值根据是否发生异常传入{@code run}的返回值或{@code null}
* 任意一个回调为空时直接穿透,使用上一个正确执行的值进行传递或者返回,发生异常会执行{@code finaby}但是不会返回内容 * @see trySupplier @@ -158,6 +160,7 @@ interface SyLock { * @param run 执行的回调 * @param finaby 进入finally块后的回调 * + * @throws Exception 异常类型根据实际运行时回调抛出决定 * @see tryRunnable * @see Runnable * @see LockType @@ -188,6 +191,7 @@ interface SyLock { * * @return 回调返回的内容,遇到异常不返回 * + * @throws Exception 异常类型根据实际运行时回调抛出决定 * @see trySupplier * @see LockType * @see #trylock(LockType, trySupplier, Function) @@ -205,6 +209,7 @@ interface SyLock { * @param lockType 锁类型 * @param run 执行的回调 * + * @throws Exception 异常类型根据实际运行时回调抛出决定 * @see tryRunnable * @see LockType * @see #trylock(LockType, trySupplier, Function) @@ -418,6 +423,7 @@ interface SyLock { * * @return 回调返回的内容,遇到异常不返回 * + * @throws Exception 异常类型根据实际运行时回调抛出决定 * @see trySupplier * @see LockType#READ * @see #trylock(LockType, trySupplier, Function) @@ -433,6 +439,7 @@ interface SyLock { * * @param run 执行的回调 * + * @throws Exception 异常类型根据实际运行时回调抛出决定 * @see tryRunnable * @see LockType#READ * @see #trylock(LockType, trySupplier, Function) @@ -456,6 +463,7 @@ interface SyLock { * * @return 回调返回的内容,遇到异常不返回 * + * @throws Exception 异常类型根据实际运行时回调抛出决定 * @see trySupplier * @see LockType#WRITE * @see #trylock(LockType, trySupplier, Function) @@ -471,6 +479,7 @@ interface SyLock { * * @param run 执行的回调 * + * @throws Exception 异常类型根据实际运行时回调抛出决定 * @see tryRunnable * @see LockType#WRITE * @see #trylock(LockType, trySupplier, Function) @@ -489,6 +498,8 @@ interface SyLock { /** * 获取传统并发实现 * + * @return 获取的并发控制对象 + * * @see ObjLock */ @NotNull @@ -498,6 +509,8 @@ interface SyLock { /** * 获取可重入锁实现 * + * @return 获取的并发控制对象 + * * @see ReLock */ @NotNull @@ -507,6 +520,8 @@ interface SyLock { /** * 获取读写锁实现 * + * @return 获取的并发控制对象 + * * @see RWLock */ @NotNull diff --git a/src/main/java/fybug/nulll/pdconcurrent/e/package-info.java b/src/main/java/fybug/nulll/pdconcurrent/e/package-info.java new file mode 100644 index 0000000000000000000000000000000000000000..561ff75e6cc4eb20a22be98be45f32fed23eacf9 --- /dev/null +++ b/src/main/java/fybug/nulll/pdconcurrent/e/package-info.java @@ -0,0 +1,8 @@ +/** + * 枚举包 + * + * @author fybug + * @version 0.0.1 + * @since PDConcurrent 0.1.0 + */ +package fybug.nulll.pdconcurrent.e; \ No newline at end of file diff --git a/src/main/java/fybug/nulll/pdconcurrent/fun/tryConsumer.java b/src/main/java/fybug/nulll/pdconcurrent/fun/tryConsumer.java index b3ba660ba278183bffead0595d8df4653ceec73d..c02de60f1fa1c24c5a7d4ab7b86797c0ba5f25fb 100644 --- a/src/main/java/fybug/nulll/pdconcurrent/fun/tryConsumer.java +++ b/src/main/java/fybug/nulll/pdconcurrent/fun/tryConsumer.java @@ -5,6 +5,8 @@ import jakarta.annotation.Nullable; import jakarta.validation.constraints.NotNull; /** + * @param 传入的参数类型 + * * @author fybug * @version 0.0.2 * @see Consumer diff --git a/src/main/java/fybug/nulll/pdconcurrent/fun/tryFunction.java b/src/main/java/fybug/nulll/pdconcurrent/fun/tryFunction.java index 060841ce89b8f0d01861fc8ba388be747cfa72c3..aeeed13cea8bbe54cf13e720d6050037c5deacba 100644 --- a/src/main/java/fybug/nulll/pdconcurrent/fun/tryFunction.java +++ b/src/main/java/fybug/nulll/pdconcurrent/fun/tryFunction.java @@ -5,6 +5,9 @@ import jakarta.annotation.Nullable; import jakarta.validation.constraints.NotNull; /** + * @param 传入的参数类型 + * @param 返回的参数类型 + * * @author fybug * @version 0.0.2 * @see Function diff --git a/src/main/java/fybug/nulll/pdconcurrent/fun/trySupplier.java b/src/main/java/fybug/nulll/pdconcurrent/fun/trySupplier.java index 1733f2485bd31b2c96721e0e41b24884ce8e2821..d1b8ebfe086d9b3cdc1f9566bc2e74a13c067716 100644 --- a/src/main/java/fybug/nulll/pdconcurrent/fun/trySupplier.java +++ b/src/main/java/fybug/nulll/pdconcurrent/fun/trySupplier.java @@ -5,6 +5,8 @@ import jakarta.annotation.Nullable; import jakarta.validation.constraints.NotNull; /** + * @param 返回的参数类型 + * * @author fybug * @version 0.0.2 * @see Supplier diff --git a/src/test/java/a.java b/src/test/java/a.java new file mode 100644 index 0000000000000000000000000000000000000000..d82921a30541930c9de80a504b855e81e2db02f4 --- /dev/null +++ b/src/test/java/a.java @@ -0,0 +1,29 @@ +public +class a { + public static + void main(String[] args) { + try { + System.out.println(a()); + } catch ( Exception e ) { + System.out.println("11111"); + } + } + + private static + String a() throws Exception { + String a; + try { + a = "2"; + b(); + } finally { + a = "3"; + System.out.println("11111"); + } + return a; + } + + private static + void b() throws Exception { + throw new Exception(); + } +}