【发布时间】:2013-08-16 13:37:15
【问题描述】:
是否可以为我的整个程序设置一个线程池以便重复使用线程,或者我是否需要将 ExecutorService 设为全局/将其传递给所有使用它的对象。
更准确地说,我有多个任务在我的程序中运行,但它们运行的频率并不高。
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
我相信没有必要为每个任务都运行一个完整的线程,但每次执行任务时重新启动线程也可能代价高昂。
除了使线程池全局化之外,还有更好的选择吗?
【问题讨论】:
-
您确定需要线程吗?如果任务非常简单,请在您的线程中执行。
-
任务需要异步调度和运行。我认为没有其他选择。
-
C# 使用全局线程池,同时让程序员可以创建其他池。我会说这是一个很好的解决方案。如果您需要一个全局执行器,只需创建一个单例工厂,它将托管您的线程池。
标签: java concurrency threadpool executorservice