Skip to content

Commit 870ec24

Browse files
committed
use virtual thread executor by default
1 parent 5e44ea3 commit 870ec24

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

http-client/src/main/java/io/avaje/http/client/DHttpClientBuilder.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,16 @@
1616
import java.util.List;
1717
import java.util.Optional;
1818
import java.util.concurrent.Executor;
19+
import java.util.concurrent.ExecutorService;
20+
import java.util.concurrent.Executors;
1921
import java.util.function.Function;
2022

2123
import static java.util.Objects.requireNonNull;
2224

25+
import java.lang.invoke.MethodHandle;
26+
import java.lang.invoke.MethodHandles;
27+
import java.lang.invoke.MethodType;
28+
2329
final class DHttpClientBuilder implements HttpClient.Builder, HttpClient.Builder.State {
2430

2531
private java.net.http.HttpClient client;
@@ -99,6 +105,20 @@ private java.net.http.HttpClient defaultClient() {
99105
}
100106
if (executor != null) {
101107
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+
}
102122
}
103123
if (proxy != null) {
104124
builder.proxy(proxy);

0 commit comments

Comments
 (0)