gpt4 book ai didi

java - ExecutorService 为每个提交的任务指定使用新线程

转载 作者:行者123 更新时间:2023-11-30 10:19:17 25 4
gpt4 key购买 nike

我知道 ExecutorService 的目的是回收相同的线程,但在这种情况下,我确实需要指定为每个提交的任务使用一个新线程。

这里是初始化:

ExecutorService COMMAND_EXECUTOR_SERVICE = Executors.newFixedThreadPool(1);

当命令到来时:

Task commandExecutionTask = new Task() {
@Override
protected Object call() {
// do something with the command
}
}

然后:

COMMAND_EXECUTOR_SERVICE.submit(commandExecutionTask);

我怎样才能做到这一点?目的是确保刚刚运行的线程被正确地垃圾收集。

最佳答案

I really need to specify to use a new thread for each submitted task."

为什么?

The purpose is making sure the thread which just ran is garbage collected properly.

如果你需要关心这个,你有一个漏洞抽象。我能想到的唯一原因是因为您使用的是 ThreadLocal,它保留了任务执行之间的值。

只需在任务中使用具有生命周期的成员变量即可(例如,在任务中创建且不保留的实例的成员变量)。

或者在运行任务结束时添加一些东西以确保清理 ThreadLocal 值,例如

try {
// Do stuff.
} finally {
threadLocalVariable.remove();
}

关于java - ExecutorService 为每个提交的任务指定使用新线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48683903/

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