On Wed, 7 Jun 2023 15:12:40 GMT, Alan Bateman <al...@openjdk.org> 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

Reply via email to