MIK*_*MIK 9 java multithreading executorservice threadpoolexecutor
我在我的应用程序上运行了负载测试,以找到支持计划负载所需的最大线程数.
我已经使用过,ExecutorService CachedThreadPool所以线程是根据负载动态创建的.现在我知道使用最大线程数的值getLargestPoolSize().
我应更换CachedThreadPool同FixedThreadPool(maxValue),以避免大量(Integer.MAX_VALUE)的线程创建的行为CachedThreadPool?
建议每个人的利弊.
Java中的缓存线程池和固定线程池之间最重要的区别是缓存的线程池对它将产生和使用的线程数没有上限.哪一个是首选取决于您希望缩放行为是什么样的.
缓存线程池的主要优点是即使您有意外执行的大量任务,线程也会立即开始执行.例如,您的业务需求可能会持续数月或数年,并且您的应用程序可能会转移到功能更强大的计算机上,使用缓存的线程池将允许通过使用增加的可用处理能力来满足增加的需求,而无需更改代码.这可能是一个优点,因为一旦应用程序已经使用数月或数年,人们可能不会很容易地记住代码,以便将线程限制识别为可以改变以提高性能的参数.
固定线程池的主要优点是线程数量受到更严格的控制.如果此应用程序在短时间内收到大量任务,这有助于防止软件安装的其他部分(在应用程序内或其他应用程序中)缺乏处理能力.此外,降低了进入操作系统线程限制的风险,降低了当进程需要生成线程而无法执行此操作时可能导致的软件崩溃风险.
| 归档时间: |
|
| 查看次数: |
3521 次 |
| 最近记录: |