RFR: 8347039: ThreadPerTaskExecutor terminates if cancelled tasks still running

Alan Bateman alanb at openjdk.org
Tue Jan 14 06:55:50 UTC 2025


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.

-------------

Commit messages:
 - Merge branch 'master' into JDK-8347039
 - Add asserts to check Future state
 - Fix typo in comment
 - Merge branch 'master' into JDK-8347039
 - Initial commit

Changes: https://git.openjdk.org/jdk/pull/23036/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23036&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8347039
  Stats: 66 lines in 2 files changed: 54 ins; 2 del; 10 mod
  Patch: https://git.openjdk.org/jdk/pull/23036.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23036/head:pull/23036

PR: https://git.openjdk.org/jdk/pull/23036


More information about the core-libs-dev mailing list