线程的执行: 因为多个线程都获取cpu的执行权。cpu执行到谁,谁就运行。 明确一点,在某一个时刻,只能有一个程序在运行。(多核除外) cpu在做着快速的切换,以达到看上去是同时运行的效果。 我们可以形象把多线程的运行行为在互相抢夺cpu的执行权。 这就是多线程的一个特性:随机性。谁抢到谁执行,至于执行多长,cpu说的算。 所以某一线程的在执行if(num>0)之后可能立即被其他线程抢到执行权,还没来得及执行num--
再次进行if(num>0) 判断,仍然满足,所以后来依次执行num--,具体结果出现-1,-2,这都是
可能的,要看线程的状态
|