On Thu, 8 Jun 2023 10:21:07 GMT, Alan Bateman <[email protected]> wrote:
>> src/java.base/share/classes/java/lang/VirtualThread.java line 879:
>>
>>> 877: boolean oldValue = interrupted;
>>> 878: if (oldValue) {
>>> 879: synchronized (interruptLock) {
>>
>> Don't you still need to read under the lock to synchronize with the
>> interrupt method?
>
> The override of interrupt for virtual threads always sets the interrupt
> status as the first step. So if Thread.interrupted reads the interrupt status
> as true then it will synchronize. It's not too different to platform threads,
> I think you added a comment to Thread.interrupted about this when move the
> interrupted flag into Java.
Changing the synchronization means there is a lot more to think about for what
was otherwise a fairly trivial change. But I think you are right, if we don't
see interrupted==true then we do nothing; if we do see it then we synchronize.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14361#discussion_r1222948182