RFR: 8347039: ThreadPerTaskExecutor terminates if cancelled tasks still running
Alan Bateman
alanb at openjdk.org
Tue Jan 14 06:55:51 UTC 2025
On Fri, 10 Jan 2025 14:16:44 GMT, Viktor Klang <vklang at 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.
Done but I don't want to too far with adding tests for Future methods in these test methods, only because the testAwaitTerminationXXX methods are for awaitTermination.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/23036#discussion_r1911923157
More information about the core-libs-dev
mailing list