RFR: 8314515: java/util/concurrent/SynchronousQueue/Fairness.java failed with "Error: fair=false i=8 j=0"
Viktor Klang
vklang at openjdk.org
Wed Jan 10 17:50:23 UTC 2024
On Wed, 10 Jan 2024 17:18:41 GMT, Alan Bateman <alanb at openjdk.org> wrote:
>> While this might not fix 8314515, it should at least make it more exact.
>
> test/jdk/java/util/concurrent/SynchronousQueue/Fairness.java line 42:
>
>> 40: private static void testFairness(boolean fair,
>> 41: final SynchronousQueue<Integer> q,
>> 42: final VarHandle underlyingHandle)
>
> The updated approach to wait until the thread is finished putting seems okay. It might be a bit cleaner for the param to testFariness be the underlying LTQ rather than calling it with a VarHandle, meaning do this in the caller.
I tried that first, but since the SynchronousQueue needs to be the one interfaced with it means passing in a SynchronousQueue and a LinkedTransferQueue pair where there is a silent dependency between the two (the LTQ needs to be the Transferer of the SynchronousQueue) so I found it safer, and more straightforward to obtain it in testFairness.
What might make it cleaner still, would be to move the creation of the MH to a static and not pass that in as an argument, so I'll do that instead. 👍
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17082#discussion_r1447727942
More information about the core-libs-dev
mailing list