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