本帖最后由 聂斌 于 2013-3-11 02:35 编辑
cpu切换是随机的
发现运行结果每一次都不同。
因为多个线程都获取cpu的执行权。cpu执行到谁,谁就运行。
明确一点,在某一个时刻,只能有一个程序在运行。(多核除外)
cpu在做着快速的切换,以达到看上去是同时运行的效果。
我们可以形象把多线程的运行形容为在互相抢夺cpu的执行权。
这就是多线程的一个特性:随机性。谁抢到谁执行,至于执行多长,cpu说的算。
在没有你特意控制的情况下,cpu会刻意的将某个线程一直执行完才去执行另外一个线程,他不会那么做,,,他在快速切换优化资源,,
如果你想看到cpu切换效果,你可以人为控制,,比如shleep,或者wait,,,让某个线程先暂停下,,,
比如:sleep
public class Ticket implements Runnable{
private int tick = 10;
public void run()
{
while(true)
{
if(tick>0)
{
try{Thread.sleep(1000);}catch(Exception e){} //这里让线程睡觉先
System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);
}
}
}
}
|