更新时间: 2022-10-28 07:34:19#java 卖票 多线程超卖package thread; /** * @author miller * @date 2022/10/28 3:24 PM */ public class TicketWindow2 implements Runnable { private int ticket = 300; @Override public void run() { int a = 0; while (true) { // try { // Thread.sleep(500); // todo 加了之后 后边卖出票数 相加 会发现超过30张了 // todo 不加 sleep ,复现不了超卖 // } catch (InterruptedException e) { // throw new RuntimeException(e); // } if (ticket > 0) { System.out.println(Thread.currentThread().getName() + "卖出了第" + ticket-- + "张票," + "剩余" + ticket + "张票"); a ++; } else { System.out.println(Thread.currentThread().getName() + "余票不足,停止售票!"); break; } } System.out.println(Thread.currentThread().getName() + "====共卖出 " + a); } } class SellTicketTest2 { public static void main(String[] args) { TicketWindow2 tw = new TicketWindow2(); // for (int i = 1; i < 4; i++) { Thread t = new Thread(tw,"窗口"+i); t.start(); } } } 变量ticket . 同时判断>0, 结果是1. 同时-1