Java - 何时使用固定大小的线程池和可变大小的线程池?

时间:2016-08-09 07:08:19

标签: java threadpoolexecutor

在java ThreadPoolExecutor中,在以下两种不同的场景中会发生什么?

query
|> limit(page_size)
|> offset(offset)
|> Repo.all

何时同时使用这两种情况?

1 个答案:

答案 0 :(得分:3)

唯一的区别是第二个设置允许您最多运行10个线程;而第一个从5开始;并且永远不会创造更多。

如果您了解在获取更多主题时没有获得更高的性能/吞吐量,那么您将使用第一个设置。另一方面,请记住,固定大小也意味着:周围总会有5(或10)个线程。从这个意义上讲,这种线程池在静态"中是最有意义的。环境;你的"加载"不会随着时间的推移而发生重大变化。你不希望5个线程完成对10个线程有用的工作,但是你也不希望10个线程在大多数时候都空闲,因为5个线程就足够了。

换句话说:它在很大程度上取决于你的整体设置;关于传入的流量,以及许多其他因素,有多少线程会给你带来最好的"结果。所以,如果有疑问,你应该仔细分析;并测试改变一个变量(如最大线程数)的变化。但当然:所有这些都要求您有很好的方法来衡量应用程序的性能/行为。