File tree Expand file tree Collapse file tree 1 file changed +20
-0
lines changed
http-client/src/main/java/io/avaje/http/client Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Original file line number Diff line number Diff line change 16
16
import java .util .List ;
17
17
import java .util .Optional ;
18
18
import java .util .concurrent .Executor ;
19
+ import java .util .concurrent .ExecutorService ;
20
+ import java .util .concurrent .Executors ;
19
21
import java .util .function .Function ;
20
22
21
23
import static java .util .Objects .requireNonNull ;
22
24
25
+ import java .lang .invoke .MethodHandle ;
26
+ import java .lang .invoke .MethodHandles ;
27
+ import java .lang .invoke .MethodType ;
28
+
23
29
final class DHttpClientBuilder implements HttpClient .Builder , HttpClient .Builder .State {
24
30
25
31
private java .net .http .HttpClient client ;
@@ -99,6 +105,20 @@ private java.net.http.HttpClient defaultClient() {
99
105
}
100
106
if (executor != null ) {
101
107
builder .executor (executor );
108
+ } else {
109
+ try {
110
+ ExecutorService virtualExecutorService =
111
+ (ExecutorService )
112
+ MethodHandles .lookup ()
113
+ .findStatic (
114
+ Executors .class ,
115
+ "newVirtualThreadPerTaskExecutor" ,
116
+ MethodType .methodType (ExecutorService .class ))
117
+ .invokeExact ();
118
+ builder .executor (virtualExecutorService );
119
+ } catch (Throwable t ) {
120
+ // Nothing to do
121
+ }
102
122
}
103
123
if (proxy != null ) {
104
124
builder .proxy (proxy );
You can’t perform that action at this time.
0 commit comments