其他
Java多线程中的虚假唤醒和如何避免
先来看一个例子一个卖面的面馆,有一个做面的厨师和一个吃面的食客,需要保证,厨师做一碗面,食客吃一碗面,不能一次性多做几碗面,更不能没有面的时候吃面;按照上述操作,进行十轮做面吃面的操作。用代码说话首先我们需要有一个资源类,里面包含面的数量,做面操作,吃面操作;当面的数量为0时,厨师才做面,做完面,需要唤醒等待的食客,否则厨师需要等待食客吃完面才能做面;当面的数量不为0时,食客才能吃面,吃完面需要唤醒正在等待的厨师,否则食客需要等待厨师做完面才能吃面;然后在主类中,我们创建一个厨师线程进行10次做面,一个食客线程进行10次吃面;代码如下:package
2020年12月3日