本文主要探究主线程和子线程的执行顺序的。
通过2个类模拟,NewThread为子线程,RunnableDemo模拟主线程

public class NewThread implements Runnable ...{

    /** *//**
     * @param args
     */
    Thread t;

    public NewThread() ...{
        t = new Thread(this, "Child Thread");
        t.start();
        System.out.println("start child thread calls start()");
    }

    public void run() ...{
        // TODO 自动生成方法存根
        System.out.println("start child thread");
        for (int i = 7; i > 0; i--) ...{
            try ...{
                System.out.println("child thread name is=" + t.getName() + "=="
                        + i);
                Thread.sleep(500);
            } catch (InterruptedException e) ...{
                e.printStackTrace();
            }
        }
        System.out.println("child thread is ended");
    }
}

public class RunnableDemo ...{

    /** *//**
     * @param args
     */
    public static void main(String[] args) ...{
        // TODO 自动生成方法存根
        new NewThread();
        
        System.out.println("start main thread");

        for(int i=7;i>0;i--)...{
            try ...{
                System.out.println("main Thread=="+i);
                Thread.sleep(1000);
            } catch (InterruptedException e) ...{
                // TODO 自动生成 catch 块
                e.printStackTrace();
            }
        }
        System.out.println("main thread is ended");
    }
}
结果为
start child thread calls start()
start main thread
main Thread==7
start child thread
child thread name is=Child Thread==7
child thread name is=Child Thread==6
main Thread==6
child thread name is=Child Thread==5
child thread name is=Child Thread==4
main Thread==5
child thread name is=Child Thread==3
child thread name is=Child Thread==2
main Thread==4
child thread name is=Child Thread==1
child thread is ended
main Thread==3
main Thread==2
main Thread==1
main thread is ended
由上测试结果可见,子线程调用了start()后,并不会直接执行run(),而是先回到主线程,待主线程挂起时,才会
会到子线程继续执行。但有个较奇怪的问题是,如果在主线程中Thread.sleep(0),主线程仍然会挂起,而跳到子
线程去。
                  
                  
                  
                  
                            
本文通过两个类的实例演示了Java中主线程和子线程的执行顺序。NewThread作为子线程,RunnableDemo作为主线程。实验结果显示,子线程启动后并不会立即执行run()方法,而是先回到主线程执行,直到主线程挂起时才开始执行。
          
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					2306
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            