On Wed, 7 Jun 2023 15:12:40 GMT, Alan Bateman <[email protected]> wrote:
> Thread.interrupted is used to "get and clear" the current thread's interrupt
> status. When called from a virtual thread, the current implementation always
> clears the carrier's interrupt status. There is no need to do this when the
> interrupt status is not set, it can just read the interrupt status and return
> false in that case.
>
> This was found by Sergey Kuksenko when comparing platform vs. virtual thread
> performance. Once CODETOOLS-7903476 is in a released version of JMH then we
> can start to accumulate benchmarks that execute in virtual threads.
>
> Testing: tier1-5
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?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14361#discussion_r1222725444