0

スレッドに関するコードを次に示します.....これら2つの new() ステートメントの違いがわかりません。

  Runnable r=new Runnable() {
    public void run() {
    System.out.print("Cat");
    }
    };

    Thread t=new Thread(r) {
    public void run() {
    System.out.println("Dog");
    }
    };
    t.start();

出力は犬ですが、なぜ、どのように?

4

7 に答える 7

1

最初の「new」ステートメントでは、2 番目の「new」ステートメントで作成されたスレッドに後で渡す Runnable インスタンスを作成します。スレッドを作成する 2 番目の「新しい」ステートメントのように、出力は犬です。run() メソッドもオーバーライドしています。これは、渡した Runnable 内の run() の実装よりも優先する必要があります。これは、 Cat を出力する run() の実行可能な実装は使用されず、Dog を出力する run() 実装のみがスレッドによって呼び出されます。

于 2013-10-14T08:55:48.137 に答える
0

への変更:

Runnable r=new Runnable() {
public void run() {
System.out.print("Cat");
}
};

Thread t=new Thread(r);
t.start();

これは「猫」を出力するはずです

于 2013-10-14T08:47:51.037 に答える