JEP 266: More Concurrency UpdatesJEP 266: More Concurrency UpdatesOwnerDoug LeaTypeFeatureScopeSEStatusClosed / DeliveredRelease9Componentcore-libs / java.util.concurrentDiscussioncore dash libs dash dev at openjdk dot java dot netEffortSDurationSRelates toJEP 193: Variable HandlesReviewed byChris Hegarty, Martin Buchholz, Paul SandozEndorsed byBrian GoetzCreated2015/08/04 11:01Updated2017/04/24 23:02Issue8132960Summary
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


Interfaces supporting the Reactive Streams publish-subscribe
framework, nested within the new class Flow.  Publishers produce
items consumed by one or more Subscribers, 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 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.


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.



Numerous implementation improvements accumulated since JDK 8; many of them are
small, but some include Javadoc spec rewordings.


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.
InstallingContributingSponsoringDevelopers' GuideVulnerabilitiesJDK GA/EA BuildsMailing listsWiki
                      · IRCBylaws · CensusLegalWorkshopJEP ProcessSource codeMercurialGitHubToolsGitjtreg harnessGroups(overview)AdoptionBuildClient LibrariesCompatibility & Specification ReviewCompilerConformanceCore LibrariesGoverning BoardHotSpotIDE Tooling & SupportInternationalizationJMXMembersNetworkingPortersQualitySecurityServiceabilityVulnerabilityWebProjects(overview,
      archive)AmberBabylonCRaCCaciocavalloClosuresCode ToolsCoinCommon VM InterfaceCompiler GrammarDetroitDevelopers' GuideDevice I/ODukeGalahadGraalIcedTeaJDK 7JDK 8JDK 8 UpdatesJDK 9JDK
      (…,
       21,
       22,
       23)JDK UpdatesJavaDoc.NextJigsawKonaKullaLambdaLanaiLeydenLilliputLocale EnhancementLoomMemory Model UpdateMetropolisMission ControlMulti-Language VMNashornNew I/OOpenJFXPanamaPenrosePort: AArch32Port: AArch64Port: BSDPort: HaikuPort: Mac OS XPort: MIPSPort: MobilePort: PowerPC/AIXPort: RISC-VPort: s390xPortolaSCTPShenandoahSkaraSumatraTiered AttributionTsanType AnnotationsValhallaVeronaVisualVMWakefieldZeroZGC

        © 2024 Oracle Corporation and/or its affiliates
        Terms of Use
        ·
        
            License: GPLv2
        · Privacy
        · Trademarks
