Thread 在这里比 Executor 更受青睐吗?
Is Thread to be favoured over Executor here?
据我了解,Executors 帮助处理 运行nables 的执行。例如。当我有几个工作线程完成它们的工作然后终止时,我会选择使用执行程序。
执行者将处理执行工作人员 运行nables 所需的线程的创建和终止。
然而现在我面临着另一种情况。固定数量classes/objects 须封装自己的线程。因此,线程在创建这些对象时启动,线程将在这些对象的整个生命周期内继续 运行ning。
这几个对象依次在程序开始时创建并存在整个 运行 时间。
我想在这种情况下线程比执行器更可取,但是当我阅读互联网时,每个人似乎都建议在任何可能的情况下使用执行器而不是线程。
有人可以告诉我我是想在这里选择 Executors 还是 Threads,为什么?
谢谢
你有点混淆了东西。 Executor
只是一个接口。 Thread
是一个核心class。没有什么可以直接暗示 Executor
实现在单独的线程中执行任务。
阅读 JavaDoc 的前几行。
因此,如果您想完全控制,只需使用 Thread
并自己做事。
在不了解上下文的情况下,很难给出一个好的答案,但总的来说,我会说需要使用 Thread
的情况很少见。如果您开始尝试使用 synchronized
来同步您的程序 "manually",我敢打赌事情很快就会失控。 (更不用说调试代码有多难了。)
我上次使用线程是在我想在后台录制一些音频的时候。这是 "start"/"stop" 的事情,而不是 "task oriented"。 (我尝试了很长时间,努力寻找一个可以为我封装的音频库,但失败了。)
如果您选择线程解决方案,我建议您尝试将线程的范围限制为仅在关联对象内执行。这将尽可能避免在整个代码中强迫您考虑发生前关系、值的线程安全发布等。
ExecutorService
可以有线程池
它优化了性能,因为创建一个线程是昂贵的。
ExecutorService
有生命周期控制
提供 shutdown()
、shutdownNow()
等。
ExecutorService
灵活
您可以调用各种行为:自定义 ThreadFactory
、设置线程池大小、延迟行为 ScheduledThreadPoolExecutor
等...
据我了解,Executors 帮助处理 运行nables 的执行。例如。当我有几个工作线程完成它们的工作然后终止时,我会选择使用执行程序。 执行者将处理执行工作人员 运行nables 所需的线程的创建和终止。
然而现在我面临着另一种情况。固定数量classes/objects 须封装自己的线程。因此,线程在创建这些对象时启动,线程将在这些对象的整个生命周期内继续 运行ning。 这几个对象依次在程序开始时创建并存在整个 运行 时间。 我想在这种情况下线程比执行器更可取,但是当我阅读互联网时,每个人似乎都建议在任何可能的情况下使用执行器而不是线程。
有人可以告诉我我是想在这里选择 Executors 还是 Threads,为什么?
谢谢
你有点混淆了东西。 Executor
只是一个接口。 Thread
是一个核心class。没有什么可以直接暗示 Executor
实现在单独的线程中执行任务。
阅读 JavaDoc 的前几行。
因此,如果您想完全控制,只需使用 Thread
并自己做事。
在不了解上下文的情况下,很难给出一个好的答案,但总的来说,我会说需要使用 Thread
的情况很少见。如果您开始尝试使用 synchronized
来同步您的程序 "manually",我敢打赌事情很快就会失控。 (更不用说调试代码有多难了。)
我上次使用线程是在我想在后台录制一些音频的时候。这是 "start"/"stop" 的事情,而不是 "task oriented"。 (我尝试了很长时间,努力寻找一个可以为我封装的音频库,但失败了。)
如果您选择线程解决方案,我建议您尝试将线程的范围限制为仅在关联对象内执行。这将尽可能避免在整个代码中强迫您考虑发生前关系、值的线程安全发布等。
ExecutorService
可以有线程池
它优化了性能,因为创建一个线程是昂贵的。
ExecutorService
有生命周期控制
shutdown()
、shutdownNow()
等。
ExecutorService
灵活
您可以调用各种行为:自定义 ThreadFactory
、设置线程池大小、延迟行为 ScheduledThreadPoolExecutor
等...