首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

,为什么在运行时数字是无序的?

2012-01-22 
求助,为什么在运行时数字是无序的??急急急classAB{public static void main(String[] args){A snew A()T

求助,为什么在运行时数字是无序的??急急急
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在后的现象

热点排行