0

Runner オブジェクトを作成しなくても、スレッドの run メソッドから Runner クラスの process メソッドにアクセスできますか?なぜですか?

class Runner {
  public void process() {
    // some multithreaded code
  }
}

main() {
Thread t1 = new Thread(new Runnable() {
                public void run() {
                    process();
                }
           });
t1.start();        
}
4

2 に答える 2

2

あなたがそれを作るなら、あなたはすることができますstatic

class Runner {
      public static void process() {
        // some multithreaded code
      }
    }

それで:

public static void main() {
    Thread t1 = new Thread(new Runnable() {
                public void run() {
                    Runner.process();
                }
           });
    t1.start();        
}

ただし、修飾またはインスタンス化process()なしでメソッドを参照することはできません。Runner.これはJava言語Object Orientedだからです。

于 2012-10-25T02:36:33.467 に答える
0

ランナーのプロセス メソッドが静的であれば、可能です。

インスタンス化せずにオブジェクトの非静的メソッドにアクセスすることはできません。そのメソッドをスレッドセーフにするときは、デューデリジェンスを実行するだけです。

于 2012-10-25T02:37:52.797 に答える