RFR: 8378268: Thread.join can wait on Thread, allows joinNanos to be removed [v2]
Jaikiran Pai
jpai at openjdk.org
Thu Feb 26 09:48:00 UTC 2026
On Thu, 26 Feb 2026 07:26:15 GMT, Alan Bateman <alanb at openjdk.org> wrote:
>> Thread.join was historically implemented with a loop of Object.wait conditioned on isAlive. We couldn't for this virtual threads because it would pin a virtual thread invoking join to it carrier. Now that Object.wait preempts, it means the special implementation of join for virtual threads can be removed. Where possible, the notifyAll is elided as it adds to the cost of termination.
>>
>> The implNote of the join methods is restored (this is implNote text, not spec, so no CSR required).
>>
>> Testing: tier1-5
>
> Alan Bateman has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision:
>
> - Remove unused import
> - Merge branch 'master' into JDK-8378268
> - Merge branch 'master' into JDK-8378268
> - Avoid notifyAll if no join
> - Merge branch 'master' into JDK-8378268
> - Merge branch 'master' into JDK-8378268
> - Remove joinNanos
Thank you Alan, looks good to me.
-------------
Marked as reviewed by jpai (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/29839#pullrequestreview-3859741358
More information about the core-libs-dev
mailing list