在下面的代码中,我试图制作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
答案 0 :(得分:1)
首先用
重命名public class DiningHall {
并运行它,因为我收到了输出
10
Before run 10
9 Served 0
所以它有效!
再见