gpt4 book ai didi

java - 带有执行器的线程池的 POC(概念验证)

转载 作者:行者123 更新时间:2023-11-29 06:02:10 24 4
gpt4 key购买 nike

谁能举例说明我们为什么要使用线程池。

我从理论上知道如何将线程池与执行器一起使用。

我看了很多教程,但我没有得到任何关于为什么我们应该使用线程池的实际例子,它可以是 newFixedThreadPool 或 newCachedThreadPool 或 newSingleThreadExecutor

在可扩展性和性能方面。

是否有人可以举例说明性能和可伸缩性方面的问题?

最佳答案

首先,检查一下我昨天写的关于线程池的描述:Android Thread Pool to manage multiple bluetooth handeling threads? (好的,这是关于 android 的,但对于经典的 java 也是一样的)。

我似乎总是发现使用线程池的主要用途是它可以很好地管理一个非常常见的问题:生产者-消费者。在这种模式中,有人需要不断地发送工作项(生产者)以供其他人(消费者)处理。工作项是从一些类似流的来源获得的,比如套接字、数据库或磁盘文件集合,需要多个工作人员才能有效处理。此处可识别的主要组件是:

  • 生产者:一个不断发布工作的线程
  • 发布作业的队列
  • 消费者:从队列中获取作业并执行它们的工作线程

除此之外,还需要使用同步来使所有这些工作正常进行,因为在没有同步的情况下读取和写入队列会导致数据损坏和不一致。此外,我们需要使系统高效,因为消费者不应在无事可做时浪费 CPU 周期。

现在这种模式很普遍,但是从头开始实现它需要相当大的努力,容易出错,需要仔细审查。

解决方案是线程池。它非常方便地管理工作队列、消费者线程和所有需要的同步。您需要做的就是扮演生产者的角色,并为池提供任务!

关于java - 带有执行器的线程池的 POC(概念验证),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9717901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com