02_Java语音进阶||day07_等待与唤醒案例、线程池、Lambda表达式
第一章 等待唤醒机制 1.1 线程间通信 概念: 多个线程在处理同一个资源 (包子), 但是处理的动作(线程的任务)却不相同。 比如: 线程A用来生产包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么 线程A与线程B之间 就存在 线程通信问题 1.2 等待唤醒机制 等待与唤醒机制: 线程之间的通信 【重点】:有效的利用资源[包子] (生产一个包子,吃一个包子,再生产一个包子,再吃一个包子) 通信:对包子的状态进行判断 * ==没有==包子-->吃货线程唤醒包子铺线程-->吃货线程等待-->包子铺线程做包子-->做好包子-->修改包子的状态==有== * ==有==包子-->包子铺线程唤醒吃货线程-->包子铺线程等待-->吃货线程吃包子-->修改包子的状态==没有== * ==没有==包子-->吃货线程唤醒包子铺线程-->吃货线程等待-->包子铺线程做包子-->做好包子-->修改包子的状态==有== * ... 等待唤醒中的方法 void wait () 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。 void notify () 唤醒在此对象监视器上等待的 单个线程 。 注:会继续执行wait方法之后的代码 void notifyAll () 唤醒在此对象监视器上等待的