Thread 在这里比 Executor 更受青睐吗?

Is Thread to be favoured over Executor here?

据我了解,Executors 帮助处理 运行nables 的执行。例如。当我有几个工作线程完成它们的工作然后终止时,我会选择使用执行程序。 执行者将处理执行工作人员 运行nables 所需的线程的创建和终止。

然而现在我面临着另一种情况。固定数量classes/objects 须封装自己的线程。因此,线程在创建这些对象时启动,线程将在这些对象的整个生命周期内继续 运行ning。 这几个对象依次在程序开始时创建并存在整个 运行 时间。 我想在这种情况下线程比执行器更可取,但是当我阅读互联网时,每个人似乎都建议在任何可能的情况下使用执行器而不是线程。

有人可以告诉我我是想在这里选择 Executors 还是 Threads,为什么?

谢谢

你有点混淆了东西。 Executor 只是一个接口。 Thread是一个核心class。没有什么可以直接暗示 Executor 实现在单独的线程中执行任务。

阅读 JavaDoc 的前几行。

Executor

因此,如果您想完全控制,只需使用 Thread 并自己做事。

在不了解上下文的情况下,很难给出一个好的答案,但总的来说,我会说需要使用 Thread 的情况很少见。如果您开始尝试使用 synchronized 来同步您的程序 "manually",我敢打赌事情很快就会失控。 (更不用说调试代码有多难了。)

我上次使用线程是在我想在后台录制一些音频的时候。这是 "start"/"stop" 的事情,而不是 "task oriented"。 (我尝试了很长时间,努力寻找一个可以为我封装的音频库,但失败了。)

如果您选择线程解决方案,我建议您尝试将线程的范围限制为仅在关联对象内执行。这将尽可能避免在整个代码中强迫您考虑发生前关系、值的线程安全发布等。

  • ExecutorService可以有线程池

它优化了性能,因为创建一个线程是昂贵的。

  • ExecutorService 有生命周期控制
提供

shutdown()shutdownNow() 等。

  • ExecutorService灵活

您可以调用各种行为:自定义 ThreadFactory、设置线程池大小、延迟行为 ScheduledThreadPoolExecutor 等...