Active Object

目的

活动对象设计模式使每个驻留在其控制线程中的对象的方法执行与方法调用脱钩。 目的是通过使用异步方法调用和用于处理请求的调度程序来引入并发。

解释

实现活动对象模式的类将包含自同步机制,而无需使用“同步”方法。

真实世界例子

兽人以其野性和顽强的灵魂而著称。 似乎他们有基于先前行为的控制线程。

要实现具有自己的控制机制线程并仅公开其API而不公开自己的执行,我们可以使用活动对象模式。

程序示例


iluwatarConcurrencyPerformance大约 1 分钟
Async Method Invocation

意图

异步方法调用是一个调用线程在等待任务结果时不会阻塞的模式。模式为多个独立的任务提供并行的处理方式并且通过回调或等到它们全部完成来接收任务结果。

解释

真实世界例子

发射火箭是一项令人激动的事务。任务指挥官发出了发射命令,经过一段不确定的时间后,火箭要么成功发射,要么惨遭失败。

通俗地说

异步方法调用开始任务处理,并在任务完成之前立即返回。 任务处理的结果稍后返回给调用方。


iluwatarConcurrencyReactive大约 3 分钟
Balking

意图

止步模式用于防止对象在不完整或不合适的状态下执行某些代码。

解释

真实世界例子

洗衣机中有一个开始按钮,用于启动衣物洗涤。当洗衣机处于非活动状态时,按钮将按预期工作,但是如果已经在洗涤,则按钮将不起任何作用。

通俗地说

使用止步模式,仅当对象处于特定状态时才执行特定代码。

维基百科说

禁止模式是一种软件设计模式,仅当对象处于特定状态时才对对象执行操作。例如,一个对象读取zip压缩文件并在压缩文件没打开的时候调用get方法,对象将在请求的时候”止步“。


iluwatarConcurrencyDecoupling大约 2 分钟
Producer Consumer

目的

生产者消费者设计模式是一种经典的并发模式,通过将工作与执行工作任务分开来减少生产者与消费者之间的耦合。

类图

适用性

在以下情况下使用生产者消费者

  • 通过将工作分成生产和消费两个工作进程来解耦系统
  • 解决生产工作和消费工作需要不同时间的问题

iluwatarConcurrencyReactive小于 1 分钟
Version Number

名字 / 分类

版本号

或称

实体版本控制,乐观锁。

目的

解决多个客户端尝试同时更新同一实体时的并发冲突。

解释

现实世界的例子

爱丽丝(Alice)和鲍勃(Bob)正在管理书,该书存储在数据库中。 我们的英雄们正在同时进行更改,我们需要某种机制来防止他们相互覆盖。

通俗地说

版本号模式可防止对同一实体进行并发更新。


iluwatarConcurrencyData accessMicroservices大约 3 分钟