多线程之间的协同
上一节
下一节
8.4多线程之间的协同
•数据“采集-处理”系统
–处理模块等待采集模块提交数据,如果发现有数据则取出处理,否则进入等待状态
–采集模块检查自己提交的数据是否已被处理,如果已处理则提交下一个数据,否则也进入等待状态
•类似的系统还有业务“申请-审批”系统、订单“下单-处理”系统等
•可以将这类系统抽象成一种“生产者-消费者”(producer-consumer)数据处理模式
•“生产者-消费者”模式
对数据箱的操作需要同步
对数据箱的操作顺序是“先存后取,取完再存”
•编写多线程“生产者-消费者”模式数据处理程序
–需要同步线程间的互斥操作
–控制各线程的运行次序
•多线程之间的协同(coordination)
•Java语言在同步机制的基础上又增加了一种等待-唤醒(wait-notify)机制
1、守护代码块
2、Java等待–唤醒机制
3、多线程“生产者消费者”模式编程