并发设计模式

终止线程

如何在线程 1 中终止线程 2?

  1. 使用 stop,不能确保线程 2 完整结束
  2. System.exit(int),会终止整个程序
  3. 使用中断机制

两阶段终止模式

第一阶段 T1 对 T2 发出终止指令,第二阶段 T2 响应终止指令

实现

java 线程进入终止状态的前提是进入 RUNNABLE 桩体,利用中断机制的 interrupt() 方法,将线程从休眠状态转换到 RUNNABLE 状态。

然后在 T2 中设置标志位,当 T2 会合适时机检查标记位,判断标志位来决定自己是否退出 run() 方法

场景

避免共享(线程安全)

Immutability 模式

实现

场景

Copy-On-Write 模式(读多写少场景)

实现

场景

Thread-Specific Storage 模式——不共享变量

实现

场景

多线程版本 if

Guarded Suspension 模式——等待准备好

实现

场景

Balking 模式——不需要算了

实现

场景

多线程分工

Thread-Per-Message 模式——一个线程一个业务

实现

场景

Work Thread 模式——避免重复创造线程

实现

场景

生产者 - 消费者——流水线模式

优点

实现

场景