线程生产者与消费者--等待唤醒机制--虚假唤醒问题

首先是生产者和消费者的代码示例:
线程生产者与消费者--等待唤醒机制--虚假唤醒问题
线程生产者与消费者--等待唤醒机制--虚假唤醒问题运行没做锁的会导致的结果(面试经常会问到):
共享资源都会出现的问题生产者会一直生产,消费者会一直消费,导致资源的浪费
线程生产者与消费者--等待唤醒机制--虚假唤醒问题
如果用上同步方法:
用上等待唤醒机制,这里是没指定唤醒某个线程而是唤醒所有
线程生产者与消费者--等待唤醒机制--虚假唤醒问题
线程生产者与消费者--等待唤醒机制--虚假唤醒问题

如果生产者线程先暂停,让消费者线程先运行:
线程生产者与消费者--等待唤醒机制--虚假唤醒问题
线程生产者与消费者--等待唤醒机制--虚假唤醒问题
然后消费者线程循环就结束了线程生产者与消费者--等待唤醒机制--虚假唤醒问题
但是生产者循环正好还有一次的话如下:
线程生产者与消费者--等待唤醒机制--虚假唤醒问题
线程生产者与消费者--等待唤醒机制--虚假唤醒问题
但是如果说将上面的问题将else去除掉的话
线程生产者与消费者--等待唤醒机制--虚假唤醒问题
线程生产者与消费者--等待唤醒机制--虚假唤醒问题
但是上面都是只有生产者消费者各一条线程,如果多条线程就会出现下面的情况:
线程生产者与消费者--等待唤醒机制--虚假唤醒问题
线程生产者与消费者--等待唤醒机制--虚假唤醒问题
线程生产者与消费者--等待唤醒机制--虚假唤醒问题

线程生产者与消费者--等待唤醒机制--虚假唤醒问题