问题遇到的现象和发生背景
synchronized应该没问题吧,是没有共享num值?,但是设置了static还是没用?
用代码块功能插入代码,请勿粘贴截图
public class ticketSell {
public static void main(String[] args) {
ticket ticket = new ticket();
ticket ticket1 = new ticket();
ticket ticket2 = new ticket();
ticket.start();
ticket1.start();
ticket2.start();
}
}
class ticket extends Thread {
public static int num = 100;
boolean loop = true;
@Override
public void run() {
while (loop) {
sell();
}
}
public synchronized void sell() {
if (num <= 0) {
loop = false;
System.out.println("售票结束");
return;
}
System.out.println(Thread.currentThread().getName() + "-窗口:卖出一张票,还剩:" + (--num));
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}