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");
    }

}
4

2 回答 2

4

试试这个...

1.方法dance属于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());
        }
    
        

}
于 2012-07-12T04:32:28.647 回答
0

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

于 2012-07-12T03:40:07.717 回答