type
status
date
slug
summary
tags
category
icon
password
创建时间
Sep 19, 2024 03:51 PM
同步模式
- 保护性暂停:即 Guarded Suspension,用在一个线程等待另一个线程的执行结果
- 要点
- 有一个结果需要从一个线程传递到另一个线程,让他们关联同一个 GuardedObject
- 如果有结果不断从一个线程到另一个线程那么可以使用消息队列(见生产者/消费者)
- JDK 中,join 的实现、Future 的实现,采用的就是此模式
- 因为要等待另一方的结果,因此归类到同步模式
- 扩展
- 带超时版
GuardedObject
- 多任务版
GuardedObject
- Balking:Balking (犹豫)模式用在一个线程发现另一个线程或本线程已经做了某一件相同的事,那么本线程就无需再做了,直接结束返回。简单理解为,调用多次
start
,只执行一次。
- 顺序控制
- 固定运行顺序
- 交替输出
异步模式
- 生产者/消费者
- 要点
- 与前面的保护性暂停中的 GuardObject 不同,不需要产生结果和消费结果的线程一一对应
- 消费队列可以用来平衡生产和消费的线程资源
- 生产者仅负责产生结果数据,不关心数据该如何处理,而消费者专心处理结果数据
- 消息队列是有容量限制的,满时不会再加入数据,空时不会再消耗数据
- JDK 中各种阻塞队列,采用的就是这种模式
- 工作线程:让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务。也可以将其归类为分工模式,它的典型实现就是线程池,也体现了经典设计模式中的享元模式。
终止模式
- 两阶段终止模式
