何时为每个程序/应用程序运行创建多个执行程序服务是个好主意?你为什么要这样做,而不是只是executors.newcachedthreadpool()在开始时启动并提交所有的callables.
总而言之,我想不出一个原因,对于一个足够大的项目,你会想要为整个程序使用一个线程池.
添加执行程序服务的典型用例是当您希望服务使用不同的线程池策略或具有两个不同的池大小时。您的应用程序可能包含一类您希望提交到大型固定大小池的可运行程序,以及您希望提交到较小池的另一种可运行程序。
请记住,ExecutorService 有多种实现:
查看 ThreadPoolExecutor 的构造函数参数,这些都是您可能需要根据您提交的任务类型进行调整的内容:
ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue)
Run Code Online (Sandbox Code Playgroud)
请注意,您还可以传入队列,以便您可以控制线程池使用的排队策略。
| 归档时间: |
|
| 查看次数: |
5206 次 |
| 最近记录: |