日期:2014-05-20  浏览次数:20688 次

求助,为什么在运行时数字是无序的??急急急
class AB
{
public static void main(String[] args) 
{
A s=new A();
Thread t1=new Thread(s);
  Thread t2=new Thread(s);
  Thread t3=new Thread(s);
  Thread t4=new Thread(s);
t1.start();
  t2.start();
  t3.start();
  t4.start();
}
}
class A implements Runnable
{
private int tick=100;
public void run()
{
while(true)
{
if(tick>0)
{//try{Thread.sleep(10);}catch(Exception e){}
System.out.println(Thread.currentThread().getName()+"......."+tick--);
}
}
}
}

------解决方案--------------------
两个线程a,b
tick假设是90

a中tick--,该打印90,tick变成89,还没有打印90,OK,此时cpu切换线程执行

b开始执行,tick--,该打印89,tick变成88,此时b时间片可能分的多一点又或者b运行的快一点,b线程打印出了89,OK,此时线程再切换

a开始执行,上次a还留了个90没打印,此时打印90


于是就出现了89在前,90在后的现象