Skip to content

Commit

Permalink
chore: upgrade jdk in ci and docs
Browse files Browse the repository at this point in the history
fixup
  • Loading branch information
oldratlee committed Oct 18, 2023
1 parent bbd320f commit 08956ce
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 26 deletions.
8 changes: 1 addition & 7 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,10 @@ jobs:
with:
java-version: 19
distribution: temurin
- name: setup Java 20
uses: actions/setup-java@v3
with:
java-version: 20
distribution: zulu
- name: setup Java 21
uses: actions/setup-java@v3
with:
java-version: 21-ea
java-version: 21
distribution: zulu

- name: run integration test
Expand All @@ -55,7 +50,6 @@ jobs:
JAVA11_HOME: ${{ env.JAVA_HOME_11_X64 }}
JAVA17_HOME: ${{ env.JAVA_HOME_17_X64 }}
JAVA19_HOME: ${{ env.JAVA_HOME_19_X64 }}
JAVA20_HOME: ${{ env.JAVA_HOME_20_X64 }}
JAVA21_HOME: ${{ env.JAVA_HOME_21_X64 }}

- name: remove self maven install files
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<a href="https://gitpod.io/#https://github.com/foldright/cffu"><img src="https://img.shields.io/badge/Gitpod-ready to code-339933?label=gitpod&logo=gitpod&logoColor=white" alt="gitpod: Ready to Code"></a>
</p>

👉 `cffu``CompletableFuture Fu` 🦝)是一个小小的[`CompletableFuture(CF)`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/CompletableFuture.html)辅助增强库,提升`CF`使用体验并减少误用,期望在业务中更方便高效安全地使用`CF`
👉 `cffu``CompletableFuture Fu` 🦝)是一个小小的[`CompletableFuture(CF)`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/CompletableFuture.html)辅助增强库,提升`CF`使用体验并减少误用,期望在业务中更方便高效安全地使用`CF`

欢迎 👏 💖

Expand Down Expand Up @@ -97,22 +97,22 @@

> 并发工具、框架的广度了解,可以看看如《[七周七并发模型](https://book.douban.com/subject/26337939/)》、《[Java虚拟机并发编程](https://book.douban.com/subject/24533312/)》、《[Scala并发编程(第2版)](https://book.douban.com/subject/35448965/)》;更多关于并发主题的书籍参见[书单](https://www.douban.com/doulist/41916951/)
其中[`CompletableFuture(CF)`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/CompletableFuture.html)有其优点:
其中[`CompletableFuture(CF)`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/CompletableFuture.html)有其优点:

- **`Java`标准库内置**
- 无需额外依赖,几乎总是可用
- 相信有极高的实现质量
- **广为人知广泛使用,有一流的群众基础**
- `CompletableFuture`在2014年发布的`Java 8`提供,有~10年了
- `CompletableFuture`的父接口[`Future`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/Future.html)早在2004年发布的`Java 5`中提供,有~20年了
- `CompletableFuture`的父接口[`Future`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/Future.html)早在2004年发布的`Java 5`中提供,有~20年了
- 虽然`Future`接口不支持 执行结果的异步获取与并发执行逻辑的编排,但也让广大`Java`开发者熟悉了`Future`这个典型的概念与工具
- **功能强大、但不会非常庞大复杂**
- 足以应对日常的业务需求开发
- 其它的大型并发框架(比如[`Akka`](https://akka.io/)[`RxJava`](https://github.com/ReactiveX/RxJava))在使用上需要理解的内容要多很多
- 当然基本的并发关注方面及其复杂性,与具体使用哪个工具无关,都是要理解与注意的
- **高层抽象**
- 或说 以业务流程的形式表达技术的并发流程
- 可以不使用繁琐易错的基础并发协调工具,如[`CountDownLatch`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/CountDownLatch.html)、锁([`Lock`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/locks/package-summary.html))、信号量([`Semaphore`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/Semaphore.html)
- 可以不使用繁琐易错的基础并发协调工具,如[`CountDownLatch`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/CountDownLatch.html)、锁([`Lock`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/locks/package-summary.html))、信号量([`Semaphore`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/Semaphore.html)

和其它并发工具、框架一样,`CompletableFuture`用于

Expand Down Expand Up @@ -558,7 +558,7 @@ public class ConcurrencyStrategyDemo {

> 可以在 [central.sonatype.com](https://central.sonatype.com/artifact/io.foldright/cffu/0.9.0/versions) 查看最新版本与可用版本列表。
- `cffu`库(包含[`Java CompletableFuture`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/CompletableFuture.html)的增强`CompletableFutureUtils`):
- `cffu`库(包含[`Java CompletableFuture`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/CompletableFuture.html)的增强`CompletableFutureUtils`):
- For `Maven` projects:

```xml
Expand Down Expand Up @@ -645,8 +645,8 @@ public class ConcurrencyStrategyDemo {
# 📚 更多资料

- 官方资料
- [`CompletionStage` JavaDoc](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/CompletionStage.html)
- [`CompletableFuture` JavaDoc](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/CompletableFuture.html)
- [`CompletionStage` JavaDoc](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/CompletionStage.html)
- [`CompletableFuture` JavaDoc](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/CompletableFuture.html)
- [`CompletableFuture` Guide](docs/completable-future-guide.md)
- 完备说明`CompletableFuture`的使用方式
- 给出 最佳实践建议 与 使用陷阱注意
Expand Down
2 changes: 1 addition & 1 deletion cffu-kotlin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@
<packageListUrl>file://${javadoc.package.list.dir}/jsr305/package-list</packageListUrl>
</link>
<link>
<url>https://docs.oracle.com/en/java/javase/20/docs/api/java.base/</url>
<url>https://docs.oracle.com/en/java/javase/21/docs/api/java.base/</url>
<packageListUrl>file://${javadoc.package.list.dir}/java/package-list</packageListUrl>
</link>
</externalDocumentationLinks>
Expand Down
2 changes: 1 addition & 1 deletion demos/scripts/integration_test
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ readonly JDK_VERSIONS=(
8
11
17
20
21
)

for jdk_version in "${JDK_VERSIONS[@]}"; do
Expand Down
2 changes: 1 addition & 1 deletion docs/cf-functions-intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@
- 这2个方法是在组合输入的多个`CF`的结果,本身复杂业务执行逻辑,逻辑简单无阻塞,所以无需`Executor`
- 这2个方法所返回的`CF`,在结果获取上,有不方便的地方: 😔
- 对于`allOf`方法,返回`CF`结果是`Void`即无内容,并没有持有多个输入`CF`的结果
- [`allOf`方法的文档](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/CompletableFuture.html#allOf(java.util.concurrent.CompletableFuture...))给的解决方法是,再通过调用各个输入`CF`的结果读取方法(如`join()`)来获得:
- [`allOf`方法的文档](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/CompletableFuture.html#allOf(java.util.concurrent.CompletableFuture...))给的解决方法是,再通过调用各个输入`CF`的结果读取方法(如`join()`)来获得:
- > the results of the given CompletableFutures are not reflected in the returned CompletableFuture, but may be obtained by inspecting them individually.
- 对于`anyOf`方法,返回`CF`结果类型是`Object`,要使用这个结果一定要做强制类型转换
- > 这些不方便的地方,在`cffu`库中,提供了对应的加强解决 💗
Expand Down
12 changes: 6 additions & 6 deletions docs/completable-future-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
- 在概念上`CF`的状态转变只能是单次单向的,这很简单可靠、也容易理解并和使用直觉一致。
- > 注:虽然下文提到的`obtrudeValue()`/`obtrudeException`方法可以突破`CF`概念上的约定,但这2个后门方法在正常设计实现中不应该会用到,尤其在业务使用应该完全忽略;带来的问题也由使用者自己了解清楚并注意。
- 〚2〛 关于「取消」状态:
- 对于`CompletableFuture`,取消的实现方式是设置[`CancellationException`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/CancellationException.html)异常。
- 对于`CompletableFuture`,取消的实现方式是设置[`CancellationException`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/CancellationException.html)异常。
- 对于「取消」状态,或说设置了「`CancellationException`」失败异常的`CompletableFuture cf`,相比其它异常失败 / 设置了其它失败异常 的情况,不一样的地方:
- 调用`cf.get()` / `cf.get(timeout, unit)`方法
- 会抛出`CancellationException`异常
Expand Down Expand Up @@ -111,11 +111,11 @@
- **无输入无返回(00)**
- 对应`Runnable`接口(包含单个`run`方法)
- **无输入有返回(01)**
- 对应[`Supplier<O>`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/function/Supplier.html)接口(包含单个`supply`方法)
- 对应[`Supplier<O>`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Supplier.html)接口(包含单个`supply`方法)
- **有输入无返回(10)**
- 对应[`Consumer<I>`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/function/Consumer.html)接口(包含单个`accept`方法)
- 对应[`Consumer<I>`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Consumer.html)接口(包含单个`accept`方法)
- **有输入有返回(11)**
- 对应[`Function<I, O>`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/function/Function.html)接口(包含单个`apply`方法)
- 对应[`Function<I, O>`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/Function.html)接口(包含单个`apply`方法)

注:

Expand All @@ -124,8 +124,8 @@
- 都是处理单个输入数据
- 如果要处理两个输入数据,即有两个上游`CF`的返回,会涉及下面的变体接口
- 对于有输入接口,有两个输入参数的变体接口:
- `Consumer`接口的两参数变体接口:[`BiConsumer<I1, I2>`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/function/BiConsumer.html)
- `Function`接口的两参数变体接口:[`BiFunction<I1, I2, O>`](https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/function/BiFunction.html)
- `Consumer`接口的两参数变体接口:[`BiConsumer<I1, I2>`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/BiConsumer.html)
- `Function`接口的两参数变体接口:[`BiFunction<I1, I2, O>`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/function/BiFunction.html)

----------------------------------------

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -584,7 +584,7 @@
</additionalOption>
<additionalOption>${javadoc.package.list.dir}/jsr305/</additionalOption>
<additionalOption>-linkoffline</additionalOption>
<additionalOption>https://docs.oracle.com/en/java/javase/20/docs/api/java.base/</additionalOption>
<additionalOption>https://docs.oracle.com/en/java/javase/21/docs/api/java.base/</additionalOption>
<additionalOption>${javadoc.package.list.dir}/java/</additionalOption>
</additionalOptions>
<additionalJOptions>
Expand Down
1 change: 0 additions & 1 deletion scripts/integration_test
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ readonly JDK_VERSIONS=(
11
17
"$default_build_jdk_version"
20
21
)

Expand Down
2 changes: 1 addition & 1 deletion src/main/javadoc/overview.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<a href="https://github.com/foldright/cffu" target="_blank">
🦝 Java CompletableFuture Fu(aka. <dfn>CF-Fu</dfn>, pronounced "Shifu")</a>,
a tiny sidekick library for
<a href="https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/CompletableFuture.html"><code>CompletableFuture</code></a>
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/CompletableFuture.html"><code>CompletableFuture</code></a>
to improve user experience and reduce misuse.
<p>The <a href="https://github.com/foldright/cffu" target="_blank"><dfn>CF-Fu</dfn> GitHub repo</a>
also include the best practice/traps guide 📚 for <code>CompletableFuture</code> 💗.
Expand Down

0 comments on commit 08956ce

Please sign in to comment.