2012-07-12 37 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

它将在子线程中执行。当你编写一个方法时,它属于一个类而不是一个特定的线程。

相关问题