终止线程
如何在线程 1 中终止线程 2?
- 使用 stop,不能确保线程 2 完整结束
- System.exit(int),会终止整个程序
- 使用中断机制
两阶段终止模式
第一阶段 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 模式——避免重复创造线程
实现
场景
生产者 - 消费者——流水线模式
优点
实现
场景