Executors.newVirtualThreadPerTaskExecutor() leaks CompletableFuture

Kasper Nielsen kasperni at gmail.com
Tue Mar 14 20:41:14 UTC 2023


Hi,

I don't know if it is much of an issue in practice but you can cast the
futures returned from Executors.newVirtualThreadPerTaskExecutor
to CompletableFuture:

ExecutorService e = Executors.newVirtualThreadPerTaskExecutor();
CompletableFuture f = (CompletableFuture<?>) e.submit(() -> {});

Other executors return instances of FutureTask which is probably less
likely to be abused.

/Kasper


More information about the loom-dev mailing list