线程执行代码出现结果跟老师说的不一样
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减去一张票后的值吗