# introduce

Worker-Thread 模式有时也称为 流水线设计模式,这种设计模式类似于工厂流水线,上游工作人员完成某个电子产品的组装之后,将半成品放到流水线传送带上,接下来的加工工作则会交给下游的工人。

线程池在某种意义上也算是 Worker-Thread模式的一种实现,线程池初始化时所创建的线程类似于在流水线等待工作的工人,提交给线程池的 Runnable 接口类似于需要加工的产品,而 Runnable 的 run 方法则相当于组装产品的说明书。

# 实现

根据上面的描述, Worker-Thread 主要有三个角色:

  • 流水线工人:用来对传送带上的产品进行加工
  • 流水线传送带:用于传送来自上游的产品
  • 产品组装说明书:用来说明该产品如何组装

# 产品信息如下:

# 相关操作如下

# Worker-ThreadProducer-Consumer 区别

# Worker-Thread

左边:生产待生产产品的线程。

右边:传送带。

# 左边:生产数据

左边的线程用来不断的往传送带上生产数据。

# 右边:传送带

传送带(channel)一启动便同时拥有若干数量的工作(Worker)线程。

Worker 于 Channel 来说不是单纯的依赖关系,而是聚合的关系,channel 必须知道 worker 的存在。

# Producer-Consumer

ProducerConsumer 对于 Queue 都是依赖关系。

Producer 不断的生产数据放到 Queue 中,或者 Consumer 不断从 Queue 中获取数据,Queue 既不知道 Producer 的存在,也不知道 Consumer 的存在。

ConsumerQueue 的消费并不依赖于数据本省的方法,只是单纯的获取数据。(Worker-Thread 获取到数据之后,还调用了数据中的方法

精彩内容推送,请关注公众号!
最近更新时间: 5/21/2020, 5:55:47 PM