7

重複の可能性:
Java: 「ランナブルを実装する」対「スレッドを拡張する」

Java には、Thread クラスを作成するための 2 つのオプションがあります。つまり、Runnable を実装するか、Thread クラスを拡張します。

Runnable を実装する理由はたくさんありますが、Thread クラスを拡張して独自の Thread クラスを作成するシナリオがどこにあるのかわかりません。

Thread の拡張が実行可能またはより良いオプションまたは有利であると思われるシナリオを教えてください...

スレッドに質問がありました が、それは私の質問に答えませんでした

4

2 に答える 2

2

Thread を拡張する理由はほとんどありません。基本的にスレッドを拡張したい唯一の理由は、一般的に悪い考えである run() 以外のものをオーバーライドする場合です。Thread を拡張することがあまり一般的ではない理由は、クラスが他のものを拡張できないためです。run() メソッドのみをオーバーライドしている場合は、Thread を拡張して Runnable を実装しないのは無意味です。

于 2012-06-17T18:27:41.370 に答える
0

Runnablerun()インターフェイスを実装するクラスによって実装される必要があるメソッドが 1 つだけあるインターフェイスです。

例えば

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        //...
    }
}

MyRunnableThreadそのクラスを使用するだけで新しいスレッドを作成することもできません。だから、言うのはあまり意味がありません -

Java には、Thread クラスを作成するための 2 つのオプションがあります。つまり、Runnable を実装することによって...

クラスを拡張することはできますが、Thread@John が言ったように、そうすることには何の意味もありません。

ただし、新しいスレッドでコードを実行する場合は、次の方法が最適です。

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

t.start()メソッドは新しいスレッドを開始し、(のイ​​ンスタンスである) のrun()メソッドを呼び出します。rMyRunnable

于 2012-06-17T19:33:23.820 に答える