RFR: 8371748: Remove the (empty) ThreadPoolExecutor.finalize() method [v2]

Jaikiran Pai jpai at openjdk.org
Thu Dec 4 06:29:00 UTC 2025


On Thu, 20 Nov 2025 20:19:24 GMT, Brent Christian <bchristi at openjdk.org> wrote:

>> From the bug report:
>> Prior to JDK 11, ThreadPoolExecutor.finalize() was specified to
>> "[invoke] shutdown() when this executor is no longer referenced and it has no threads."
>> 
>> In JDK 11, ThreadPoolExecutor.finalize() was re-specified to do nothing, leaving the finalize() method empty. ([JDK-8190324](https://bugs.openjdk.org/browse/JDK-8190324)).
>> 
>> In JDK 18, finalize() was deprecated for removal ([JDK-8276447](https://bugs.openjdk.org/browse/JDK-8276447)), after first being "standard" deprecated in JDK 9 ([JDK-8165641](https://bugs.openjdk.org/browse/JDK-8165641)).
>> 
>> The finalize() method can safely be removed from ThreadPoolExecutor.
>
> Brent Christian has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains two additional commits since the last revision:
> 
>  - Merge branch 'master' into 8371748-TPE.f10n
>  - Remove ThreadPoolExecutor.finalize()

Hello Brent, the release note looks good to me. Just a minor suggestion, perhaps the following:

> With the removal of `ThreadPoolExecutor.finalize()`, existing code that subclasses `ThreadPoolExecutor` ...

could be replaced with

> With the removal of `ThreadPoolExecutor.finalize()`, any existing class that extends `ThreadPoolExecutor` ...

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

PR Comment: https://git.openjdk.org/jdk/pull/28311#issuecomment-3610509368


More information about the core-libs-dev mailing list