package thread;public class Thread1 extends Thread
{
   public Thread1()
   {   
   super("Thread1");
   this.run();
   }
   public void run()
   {   
   for(int i=0;i<10;i++)
   {
try
{
Thread.sleep(1000);

catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
   System.out.println(this.getClass()+":"+i);
   }
   }
}
------------------------------------------------------------------package thread;public  class Thread2 implements Runnable

   Thread t1;
   public Thread2()
   {
   t1=new Thread(this,"Thread2");
   t1.start();
   }
public void run()
{
for(int i=0;i<10;i++)
{
                    try
  {
Thread.sleep(1000);
  } 
                    catch (InterruptedException e)
  {
// TODO Auto-generated catch block
e.printStackTrace();
  }
                    System.out.println(this.getClass()+":"+i);
}
}}
-------------------------------------------------------------
package thread;public class Test
{
   public static void main(String args[])
   {
   Thread1 run1=new Thread1();
   Thread2 run2=new Thread2();
   //Thread2 run3=new Thread2();
   }
}问题是,为什么如果实例化run1,run2,就会run1的线程走完了,run2才开始走,如果注释掉run1,变成只实例化run2和run3,就会run2跟run3的线程同时跑呢?