一个简单的多线程问题
public   class   ThreadTest   implements   Runnable   { 
             int   a; 
 public   void   run()   { 
                      for(a=0;a <10;a++){ 
                      try   { 
 Thread.sleep(100); 
 }   catch   (InterruptedException   e)   { 
 } 
                      System.out.println(Thread.currentThread().getName()   +    "   a= "   +   a);    
                      } 
 }   
 public   static   void   main(String[]   args)   { 
 ThreadTest   run=new   ThreadTest(); 
                         Thread   thread1=new   Thread(run); 
                         Thread   thread2=new   Thread(run); 
                         Thread   thread3=new   Thread(run); 
                         Thread   thread4=new   Thread(run); 
                         Thread   thread5=new   Thread(run); 
                         Thread   thread6=new   Thread(run); 
                         thread6.start(); 
                         thread1.start(); 
                         thread2.start(); 
                         thread3.start();    
                         thread4.start(); 
                         thread5.start();   
 } 
 } 
 为什么会输出到a=14啊
------解决方案--------------------多个线程共用同一个run指向的对象,当a=9的时候,循环结束,可能这个时候其他5个线程也运行到a=9,然后大家一起自加1,结果a一下子变成14了,当各个线程再次循环的时候,a已经14了,所以抛出异常,虚拟机终止运行。。 
 a可能的取值范围应该是[10,15]。一般13,14,15会多一些
------解决方案--------------------这涉及到线程的并发和同步,除非你先控制了线程等级,第一线程+1,然后第二线程再+1,以为刚开始的时候,他们等级是相同的,还有一个问题你机器是不是双核,如果是双核就会出现线程同时进行的问题,当然这并不能算做错误,只不过代码没有处理到这块,或者你手动指定所有线程等级.有更好方法的,大家也来讨论一下!