Relates :
|
JDK-8134850 :
|
|
JDK-8134851 :
|
|
JDK-8134852 :
|
|
JDK-8134853 :
|
|
JDK-8134854 :
|
|
JDK-8134855 :
|
|
JDK-8169515 :
|
Summary ------- An interoperable publish-subscribe framework, enhancements to the `CompletableFuture` API, and various other improvements. Motivation ---------- The continual evolution of uses of concurrency and parallelism in applications requires continual evolution in library support. Description ----------- 1. Interfaces supporting the Reactive Streams publish-subscribe framework, nested within the new class `Flow`. `Publisher`s produce items consumed by one or more `Subscriber`s, each managed by a `Subscription`. Communication relies on a simple form of flow control (method `Subscription.request`, for communicating back pressure) that can be used to avoid resource management problems that may otherwise occur in "push" based systems. A utility class `SubmissionPublisher` is provided that developers can use to create custom components. These (very small) interfaces correspond to those defined with broad participation (from the [Reactive Streams][reactiveStreams] initiative) and support interoperability across a number of async systems running on JVMs. Nesting the interfaces within a class is a conservative policy allowing their use across various short-term and long-term possibilities. There are no plans to provide network- or I/O-based `java.util.concurrent` components for distributed messaging, but it is possible that future JDK releases will include such APIs in other packages. 2. Enhancements to the `CompletableFuture` API - Time-based enhancements are added that enable a future to complete with a value or exceptionally after a certain duration, see methods `orTimeout` and `completeTimeout`. In addition, a complementary `Executor` returned by the static methods named `delayedExecutor` allow a task to execute after a certain duration. This may be combined with `Executor` receiving methods on `CompletableFuture` to support operations with time-delays. - Subclass enhancements are added making it easier to extend from `CompletableFuture`, such as to provide a subclass that supports an alternative default executor. 3. Numerous implementation improvements accumulated since JDK 8; many of them are small, but some include Javadoc spec rewordings. [reactiveStreams]: http://www.reactive-streams.org/ Testing ------- The continuing set of JSR 166 EG members provide functionality, TCK, and performance tests for all components. Risks and Assumptions --------------------- Care will be taken to ensure any small but required differences in code between the JDK 9 repository and the 166 repository are retained.
|