我正在多线程环境中通过不同的并发模型(http://tutorials.jenkov.com/java-concurrency/concurrency- models.html)
本文重点介绍了 三种并发 模型。
第一个并发模型是我所说的并行工作器模型。进来的工作分配给不同的 工人 。
工人的组织就像 工厂 中装配线的工人一样。每个工人仅完成全部工作的一部分。完成该部分后,工人会将工作转发给下一个工人。
每个工作程序都在自己的线程中运行,并且不与其他工作程序共享任何状态。有时也称为无共享并发模型。
函数并行性的基本思想是使用函数调用实现程序。功能可以看作是相互发送消息的“ 代理 ”或“ 参与者 ”,就像在组装线并发模型(AKA反应或事件驱动系统)中一样。当一个函数调用另一个函数时,这类似于发送消息。
现在,我想为这三个概念映射Java API支持
并行工作者 :是ExecutorService,ThreadPoolExecutor,CountDownLatch API吗?
组装流水线* :使用 队列和主题的 消息概念将事件发送到 JMS 等消息系统。 *
功能并行性 :ForkJoinPool在某种程度上与Java 8流有关。与流相比,ForkJoin池易于理解。
在映射这些并发模型时我正确吗?如果没有,请纠正我。
这些模型中的每一个都从一般角度说明了工作是如何完成/拆分的,但是在实施时,这实际上取决于您的确切问题。通常我会这样看:
BlockingQueue
ExecutorService
CountDownLatch
N
Thread
BlickingQueue
ForkJoinPool