public class MyThread extends Thread
  
{
public static void main(String[] args) 
{

MyThread mt1=new MyThread();
MyThread mt2=new MyThread();
mt1.start();
System.out.println("one");
mt2.start();
System.out.println("two");


}
 public void run(){
  System.out.println("Thread");
}

}
在不设置优先级的情况下:执行结果顺序为什么Thread总在one之后呢?有没有出现Thread  one  Thread two呢?

解决方案 »

  1.   

    main()优先级是最高,可是执行到了
    mt1.start();
    System.out.println("one");
    mt2.start();
    System.out.println("two");
    为什么不是顺序执行?
      

  2.   

    .start() 只是标识把线程启动,放到 队列里。不一定会马上执行。
    可能的结果是 先出了one 然后 1执行了 出一个thread 然后 two thread
    也可能是 先出one thread  thread two
    都是有可能的吧
    一同探讨
      

  3.   

    因为println这条语句执行太快了,用不了一个cpu时钟周期
      

  4.   

    主线程的时间未用完,程序就结束了.public class MyThread extends Thread
       
    {
    public static void main(String[] args)  
    {MyThread mt1=new MyThread();
    MyThread mt2=new MyThread();
    mt1.start();
    Thread.sleep(1000);
    System.out.println("one");
    mt2.start();
    Thread.sleep(1000);
    System.out.println("two");
    }
    public void run(){
    System.out.println("Thread");
    }}将其中的1000慢慢调小,就会发现结果不一样
      

  5.   

    start只是启动线程,线程不一定马上执行
    如果主线程想等待线程执行结束后再继续执行后面的代码,可以用join
    mt1.start();
    mt1.join();
    System.out.println("one");
    mt2.start();
    mt2.join();
    System.out.println("two");
      

  6.   


    赞同!在System.out.println("one");前插入如下的for循环,调节循环次数为4次左右,可以得到多种打印结果。for(int i=0;i<4;i++){
    System.out.println("---");
    }具体循环次数请根据不同主机自己调节测试。