On Fri, 10 Jan 2025 13:32:39 GMT, Alan Bateman <al...@openjdk.org> wrote:
> The thread-per-task-executor returned by > Executors.newVirtualThreadPerTaskExecutor will terminate without waiting for > threads that are still executing cancelled tasks. This is different to > ThreadPoolExecutor and ForkJoinPool that wait for the threads to finish > executing the cancelled tasks. Note that issue with TPTE is specific to > Callable tasks, Runnable tasks are not impacted. The change is to override > FutureTask.run instead of FutureTask.done. Test coverage is expanded to cover > this case. test/jdk/java/util/concurrent/ThreadPerTaskExecutor/ThreadPerTaskExecutorTest.java line 306: > 304: stop.await(); > 305: return null; > 306: }); One (additional?) option would be to obtain a reference to the returned Future from submit and assert that the Future isn't done after shutdown() returns. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/23036#discussion_r1910436867