- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对我的应用程序进行了负载测试,以找出支持计划负载所需的最大线程数。
我使用了 ExecutorService
CachedThreadPool
以便根据负载动态创建线程。现在我使用 getLargestPoolSize()
知道了最大线程数的值。
我是否应该将 CachedThreadPool
替换为 FixedThreadPool(maxValue)
,以避免 的大型
? (Integer.MAX_VALUE)
线程创建行为缓存线程池
对它们各自的优点和缺点提出建议。
最佳答案
缓存线程池和 Java 中的固定线程池之间最重要的区别是缓存线程池对它生成和使用的线程数没有上限。首选哪一个取决于您希望缩放行为是什么样的。
缓存线程池的主要优点是即使您有大量未预料到的任务要执行,线程也会立即开始执行。例如,您的业务需求可能会在数月或数年内增加,您的应用程序可能会转移到更强大的机器上,使用缓存线程池将允许通过使用增加的可用处理能力来满足增加的需求,而无需更改代码.这可能是一个优势,因为一旦应用程序投入使用数月或数年,人们可能不太容易记住代码以将线程限制识别为可以更改以提高性能的参数。
固定线程池的主要优点是线程数控制得更严。如果此应用程序在短时间内接收大量任务,这有助于防止软件安装的其他部分(在应用程序内或其他应用程序中)处理能力不足。此外,遇到操作系统线程限制的风险也降低了,从而降低了当进程需要生成线程但无法生成线程时可能导致软件崩溃的风险。
关于Java CachedThreadPool 与 FixedThreadPool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32791706/
我需要做一些多线程工作,我使用 ExecutorService.newCachedThreadPool() 并提交一些从队列中检索到的作业。 public class ContentParser {
我正在玩线程,但我不明白为什么这没有像我想象的那样工作。 我正在尝试使用线程计算总和,并期望线程池在打印结果时等待所有任务完成(由于 shutdown() 调用和 isTermination() 检查
我对我的应用程序进行了负载测试,以找出支持计划负载所需的最大线程数。 我使用了 ExecutorService CachedThreadPool 以便根据负载动态创建线程。现在我使用 getLarge
我想知道在这个特定场景中使用哪个 CachedThreadPool 或 FixedThreadPool。当用户登录到应用程序时,将获得大约 10 个地址的地址列表。我需要执行以下操作: 将地址转换为我
下面的线程每 12-24 小时运行一次,我不希望池中有空闲线程。当前代码是: private final ScheduledExecutorService scheduler = Executors.
想象一个需要时间的软件,它接收一堆文本文件(每个 100+ MB),处理它们并放入数据库。我试图通过利用更多核心(这台机器恰好是 8 个,带有超线程的四核 i7)来对其进行一些优化。 考虑以下代码:
我们正在使用通过 ExecutorService#newCachedThreadPool 创建的 CachedThreadPool。 (Java 1.6)。我们在代码的其他地方遇到错误:“无法创建新的
我目前有执行以下操作的代码: private final static ExecutorService pool = Executors.newCachedThreadPool(); public v
我在 CodeReview 中问过这个问题,但它已关闭。 对于一项学校作业,我必须创建 54 个从 Executors.newCachedThreadPool() 同时运行的线程。写入 JTextAr
我有一个服务器,它不断监听客户端连接,并在每次客户端连接时创建一个新线程来处理该客户端的 I/O。现在,我有多个实现 Runnable 的类,并且在 run 方法中有一个 while 循环,该循环一直
这是缓存的线程池: new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue()
我有许多任务,对于大多数任务,我想以不同的速率定期执行。不过,有些任务可能会安排同时执行。此外,一个任务可能需要在另一个任务当前正在执行时开始执行。 我还想通过为每个任务设置一个对象来自定义每个任务,
这个问题在这里已经有了答案: Implementation of BlockingQueue: What are the differences between SynchronousQueue a
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题吗? 更新问题,以便 editing this post 提供事实和引用来回答它. 关闭 8 年前。 Improve
我有一个程序可以生成线程 (~5-150) 来执行一堆任务。最初,我使用 FixedThreadPool 因为 this similar question建议它们更适合生命周期更长的任务,并且由于我对
我是一名优秀的程序员,十分优秀!