3

Test Exampleというクラスがあり、dance()というメソッドが1つあります。メインスレッドで、子スレッド内で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 に答える