On Thu, 10 Jul 2025 08:16:10 GMT, David Holmes <dhol...@openjdk.org> wrote:

> That fixes the observed problem, but I find the existing test logic somewhat 
> awkward. You only need a finally block to ensure something happens if an 
> exception occurred - but here if you get an exception why do we care about 
> joining the vthread? We don't know what the exception was or what it implies 
> about the state of the vthread.

The test should notify(). Without the virtual thread will not terminate and 
stay there until the vm exits. This would influence (new) test cases as heap 
dumps would accumulate virtual threads from previous tests.

Btw this is another reason to call System.gc() before every test for fixing 
https://bugs.openjdk.org/browse/JDK-8361827

join() is helpful to find issues like the observed problem and to make sure the 
virtual thread's gone.

> 
> Also using wait/notify without a loop on the wait and checking a state 
> variable is not the correct usage pattern and would be affected by spurious 
> wakeups.

I've added the loop.

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

PR Comment: https://git.openjdk.org/jdk/pull/26213#issuecomment-3056690466

Reply via email to