在下面的这段代码中,我尝试制作10个Pizzaz(因为pizzaNum的值变为10),然后将它们提供给不同的线程(我只用了一个线程来提问),但是只是在run方法开始时, pizzaNum变为0。为什么?我不明白这一点。

public class NewDiningHall {
    static int pizzaNum;
    static int studentID;

    public void makePizza() {
        pizzaNum++;
    }

    static class PizzaServe extends Thread {
        public void run(){
            System.out.println("Before run "+pizzaNum);
            String result;
            if (pizzaNum > 0) {
               result = "Served ";
               pizzaNum--;
            }
            else
                result = "Starved ";
            System.out.println(pizzaNum+" "+result + studentID);
            studentID++;
        }
    }

    public static void main(String[] args){
        NewDiningHall d = new NewDiningHall();
        for (int i = 1; i <= 10; i++) {
            d.makePizza();
        }
        System.out.println(d.pizzaNum);
        PizzaServe t1 = new PizzaServe();
        t1.start();
    }
}


输出:


10
运行前0
0饥饿0

最佳答案

首先用

public class DiningHall {


并运行它,因为我已收到输出

10
Before run 10
9 Served 0


这样就行了!

再见

09-05 21:12