Java同步很奇怪
我正在学习java中的同步,我在互联网上找到了一个简单的例子,但是根据我所学的关于同步的知识,它应该不起作用 守则:Java同步很奇怪,java,synchronization,Java,Synchronization,我正在学习java中的同步,我在互联网上找到了一个简单的例子,但是根据我所学的关于同步的知识,它应该不起作用 守则: public class PizzaHouse { boolean pizzaArived = false; synchronized void eatPizza(){ while (!pizzaArived){ try{ System.out.println("waiting");
public class PizzaHouse {
boolean pizzaArived = false;
synchronized void eatPizza(){
while (!pizzaArived){
try{
System.out.println("waiting");
wait();
} catch (InterruptedException e){
}
}
System.out.println("Eating pizza");
}
synchronized void deliverPizza(){
pizzaArived = true;
System.out.println("Pizza delivered");
notifyAll();
}
}
主要代码:
public class Main {
public static void main(String[] args) {
PizzaHouse pizzaHouse = new PizzaHouse();
Thread threadDelivering = new Thread(() -> pizzaHouse.deliverPizza());
Thread threadEating = new Thread(() -> pizzaHouse.eatPizza());
threadEating.start();
threadDelivering.start();
}
}
问题是,据我所知,这会导致僵局。假设:
然而,当我执行该代码时,它是有效的。有什么假设吗?
等等
释放锁哦,太感谢了,我忘了检查文档