1. 程式人生 > >母雞下蛋例項:多執行緒通訊生產者和消費者wait/notify和condition/await/signal條件佇列

母雞下蛋例項:多執行緒通訊生產者和消費者wait/notify和condition/await/signal條件佇列

## 簡介 --- 多執行緒通訊一直是高頻**面試**考點,有些面試官可能要求現場手寫**生產者/消費者**程式碼來考察多執行緒的功底,今天我們以實際生活中母雞下蛋案例用程式碼剖析下實現過程。母雞在雞窩下蛋了,叫練從雞窩裡把雞蛋拿出來這個過程,母雞在雞窩下蛋,是生產者,叫練撿出雞蛋,叫練是消費者,一進一出就是執行緒中的生產者和消費者模型了,雞窩是放雞蛋容器。現實中還有很多這樣的案例,如醫院叫號。下面我們畫個圖表示下。 ![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