RFR: 8351565: Implement JEP 502: Stable Values (Preview) [v33]

Viktor Klang vklang at openjdk.org
Wed Apr 2 18:59:18 UTC 2025


On Wed, 2 Apr 2025 13:44:47 GMT, Alan Bateman <alanb at openjdk.org> wrote:

>> Per Minborg has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Add info that Map#values and Map#entrySet are stable
>
> src/java.base/share/classes/java/lang/StableValue.java line 455:
> 
>> 453:      *         provided to the {@link #orElseSet(Supplier)} method.
>> 454:      */
>> 455:     boolean trySet(T content);
> 
> I assume the intent is that trySet can only return at most true once but the current wording suggests that two threads racing to set the same content would return true, or sequential calls to trySet to set the same content would return true. Does this need to be clarified?

I second this

> src/java.base/share/classes/java/lang/StableValue.java line 494:
> 
>> 492:      * <p>
>> 493:      * The provided {@code supplier} will only be invoked once even if invoked from
>> 494:      * several threads unless the {@code supplier} throws an exception.
> 
> Is this the supplier instance or any supplier? Just wondering about the case where two threads are invoke it with different instances (for whatever reason), I can't tell from the javadoc.

Seconded

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

PR Review Comment: https://git.openjdk.org/jdk/pull/23972#discussion_r2024957920
PR Review Comment: https://git.openjdk.org/jdk/pull/23972#discussion_r2024961992


More information about the core-libs-dev mailing list