gpt4 book ai didi

Java newSingleThreadExecutor 垃圾回收

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:12 33 4
gpt4 key购买 nike

考虑以下 Java 代码

void doSomething(Runnable r1, Runnable r2){
Executor executor = Executors.newSingleThreadExecutor();
executor.execute(r1);
executor.execute(r2);
}

当我调用 doSomething 方法时,执行器被创建并依次执行任务 r1 和 r2。

我的问题是:r1 和 r2 这两个任务终止后会发生什么?

我想 executor 对象会被垃圾回收,但我不知道它是否也会被关闭。如果执行者创建一个新的线程来执行,这个线程会不会导致资源泄漏?

最佳答案

I suppose the executor object will be garbage collected, but I do not know whether it will be also shutdown.

实际上 Executors.newSingleThreadExecutor() 在木头下创建了一个 FinalizableDelegatedExecutorService 实例,它将在 finalize 时调用 shutdown表示垃圾回收时自动关闭。

但是,我认为过分依赖它不是一个好主意,因为它更多的是一个可能会从一个版本更改为另一个版本的实现细节,您应该明确地关闭它,而不是防止任何意外错误。

关于Java newSingleThreadExecutor 垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39773250/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com