母雞下蛋例項:多執行緒通訊生產者和消費者wait/notify和condition/await/signal條件佇列
阿新 • • 發佈:2020-12-31
## 簡介
---
多執行緒通訊一直是高頻**面試**考點,有些面試官可能要求現場手寫**生產者/消費者**程式碼來考察多執行緒的功底,今天我們以實際生活中母雞下蛋案例用程式碼剖析下實現過程。母雞在雞窩下蛋了,叫練從雞窩裡把雞蛋拿出來這個過程,母雞在雞窩下蛋,是生產者,叫練撿出雞蛋,叫練是消費者,一進一出就是執行緒中的生產者和消費者模型了,雞窩是放雞蛋容器。現實中還有很多這樣的案例,如醫院叫號。下面我們畫個圖表示下。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/1897706/1609329522546-74481e46-56cc-4fae-8f44-c7948f04c14a.png#align=left&display=inline&height=339&margin=%5Bobject%20Object%5D&name=image.png&originHeight=339&originWidth=654&size=34376&status=done&style=none&width=654)
## 一對一生產和消費:一隻母雞和叫練
---
### wait/notify
```java
package com.duyang.thread.basic.waitLock.demo;
import java.util.ArrayList;
import java.util.List;
/**
* @author :jiaolian
* @date :Created in 2020-12-30 16:18
* @description:母雞下蛋:一對一生產者和消費者
* @modified By:
* 公眾號:叫練
*/
public class SingleNotifyWait {
//裝雞蛋的容器
private static class EggsList {
private static final List