应该不会,t1和t2的线程优先级是一样的,t1,t2谁先运行是随机决定的

解决方案 »

  1.   

    因为你是用1个Runnabel对象生成了两个两个线程对象,那么这两个线程对象所操作的都是T的成员,所以显示的时候没什么两样。
      

  2.   

    其实你的XYZ类实际上实现了 Runnable 接口,意味着它可以被线程化,
    你的test类中其实是生成了一个XYZ类对象用了两个线程来执行它。
    换句话说你的打印的内容是不变的只是速度改变了,
      

  3.   

    将程序改造如下,你将会发现有很大的不同
    import java.util.*;
    public class TEST {        public static void main(String args[]) {
                    XYZ T = new XYZ();
                    Thread t = new Thread(T);
                    Thread t2 = new Thread(T);
                    t.start();
                    t2.start();
            }
    }      class XYZ implements Runnable {
                  int i;              public void run() {
                      GregorianCalendar now=new GregorianCalendar();
                    System.out.println("MILLISECOND: " + now.get(Calendar.MILLISECOND));                      while(true) {
                                  System.out.println("Hello "+i++);
                                  GregorianCalendar pass=new GregorianCalendar();
                                  System.out.println("MILLISECOND: " + pass.get(Calendar.MILLISECOND));
                                  if(i==5000)
                                  {
                                    System.out.println(pass.SECOND - now.SECOND);
                                    System.out.println(pass.MILLISECOND - now.MILLISECOND);                                break;
                                  }
                          }
                  }
          }