RFR: 8369920: HttpClient QuicSelectorThread could be a VirtualThread [v3]

Daniel Fuchs dfuchs at openjdk.org
Tue Nov 4 15:03:00 UTC 2025


On Tue, 4 Nov 2025 15:00:13 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:

>> This change makes it possible to use a VirtualThread for the QuicSelectorThread. The default will be to use a VirtualThread on all platforms except the Windows platform. We might consider switching the default for Windows platform too once [JDK-8334574](https://bugs.openjdk.org/browse/JDK-8334574) is fixed.
>> 
>> The change should be transparent for users of the API. However, using a VirtualThread may result in subtle differences in thread scheduling and class loading, so this change also includes an escape hatch  (a non documented internal system property) that could be used to revert to a platform thread in case of unexpected issues.  That property may be removed in a future version of the JDK.
>
> Daniel Fuchs has updated the pull request incrementally with 11 additional commits since the last revision:
> 
>  - Apply suggestion from @dfuch
>  - Update test/jdk/java/net/httpclient/http3/H3QuicVTTest.java
>    
>    Co-authored-by: Volkan Yazıcı <volkan.yazici at oracle.com>
>  - Update test/jdk/java/net/httpclient/http3/H3QuicVTTest.java
>    
>    Co-authored-by: Volkan Yazıcı <volkan.yazici at oracle.com>
>  - Update test/jdk/java/net/httpclient/http3/H3QuicVTTest.java
>    
>    Co-authored-by: Volkan Yazıcı <volkan.yazici at oracle.com>
>  - Update test/jdk/java/net/httpclient/http3/H3QuicVTTest.java
>    
>    Co-authored-by: Volkan Yazıcı <volkan.yazici at oracle.com>
>  - Update test/jdk/java/net/httpclient/http3/H3QuicVTTest.java
>    
>    Co-authored-by: Volkan Yazıcı <volkan.yazici at oracle.com>
>  - Update test/jdk/java/net/httpclient/http3/H3QuicVTTest.java
>    
>    Co-authored-by: Volkan Yazıcı <volkan.yazici at oracle.com>
>  - Update test/jdk/java/net/httpclient/http3/H3QuicVTTest.java
>    
>    Co-authored-by: Volkan Yazıcı <volkan.yazici at oracle.com>
>  - Update test/jdk/java/net/httpclient/http3/H3QuicVTTest.java
>    
>    Co-authored-by: Volkan Yazıcı <volkan.yazici at oracle.com>
>  - Update test/jdk/java/net/httpclient/http3/H3QuicVTTest.java
>    
>    Co-authored-by: Volkan Yazıcı <volkan.yazici at oracle.com>
>  - ... and 1 more: https://git.openjdk.org/jdk/compare/8a53537c...3a0b2a69

src/java.net.http/share/classes/jdk/internal/net/http/quic/QuicEndpoint.java line 148:

> 146:         MAX_BUFFERED_LOW = maxBufferLow;
> 147:         String useVtForSelector =
> 148:                 System.getProperty("jdk.internal.httpclient.quic.useVTForSelector", "default");

Suggestion:

                System.getProperty("jdk.internal.httpclient.quic.selector.useVirtualThreads", "default");

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27827#discussion_r2490853880


More information about the net-dev mailing list