线程执行代码出现结果跟老师说的不一样
public class salesTicketRunnable {
public static void main(String[] args) {
TicketsRun tc = new TicketsRun();
Thread a = new Thread(tc, "窗口1");
Thread b = new Thread(tc, "窗口2");
Thread c = new Thread(tc, "窗口3");
a.start();
b.start();
c.start();
}
}
class TicketsRun implements Runnable {
private int tickets = 5;
public void run() {
while (tickets > 0) {
tickets--;
System.out.println(Thread.currentThread().getName() + "卖了一张票,票数剩余"
+ tickets);
}
}
}执行结果
窗口1卖了一张票,票数剩余2
窗口2卖了一张票,票数剩余2
窗口3卖了一张票,票数剩余2
窗口2卖了一张票,票数剩余0
窗口1卖了一张票,票数剩余1
请问,并不是打印出来4,3,2,1,0或者是乱序的4,3,2,1,0。这是怎么回事?难道是窗口1减去一张票后,刚好打印的时候被窗口2减去一张票,然后窗口一重新获得cpu,然后打印的时候打印出来的是窗口2减去一张票后的值吗