2012-07-12 81 views
3

我有一個名爲Test Example的類,它有一個叫做dance()的方法。在主線程中,如果我在子線程內調用dance()方法,會發生什麼情況?我的意思是,該方法會在子線程或主線程中執行嗎?在子線程中執行主線程方法

public class TestExample { 
    public static void main(String[] args) { 

     final TestExample test = new TestExample(); 

     new Thread(new Runnable() { 

      @Override 
      public void run() { 

       System.out.println("Hi Child Thread"); 
       test.dance(); 
      } 
     }).start(); 

    } 

    public void dance() { 
     System.out.println("Hi Main thraed"); 
    } 

} 
+1

嘗試把'System.out.format( 「線程:%S \ n」 個,Thread.currentThread()的getName()); 'main'和'run'裏面。你會得到你的答案。 – alphazero 2012-07-12 03:41:19

回答

4

嘗試......

的方法舞屬於類TestExample,不是主線程。

2.每當一個Java應用程序啓動,然後JVM會創建一個主線程,並放置 的main()方法在堆棧的底部,使得它的入口點,但如果你正在創建另一個線程並調用一個方法,然後它運行在新創建的線程中。

3.它的子線程將執行dance()方法。

參見該例子中所示,其中我已經使用Thread.currentThread().getName()

public class TestExample { 

     public static void main(String[] args) { 

      final TestExample test = new TestExample(); 



      Thread t = new Thread(new Runnable() { 

       @Override 
       public void run() { 

        System.out.println(Thread.currentThread().getName()); 
        test.dance(); 
       } 
      }); 
      t.setName("Child Thread"); 
      t.start(); 

     } 

     public void dance() { 
      System.out.println(Thread.currentThread().getName()); 
     } 



} 
0

它將在子線程中執行。當你編寫一個方法時,它屬於一個類而不是一個特定的線程。

相關問題