2

より良い投稿: 「ランナブルを実装する」対「スレッドを拡張する」

独自のスレッド クラス MyThread を 2 つの方法で作成できます。

class MyThread extends Thread
or
class MyThread implements Runnable

どちらの手法が優れているか、またその理由は?

Runnable を実装する場合、次のように MyThread オブジェクトから Thread オブジェクトを作成する必要があります。

MyThread mt = new MyThread();
Thread t = new Thread(mt);

では、Runnable Interface 手法を実装する利点は何ですか?

4

3 に答える 3

4

Runnable インターフェイスを実装するスレッドを作成する方が優れています。新しいクラスを他のクラスから拡張できるため、そうでなければ拡張できません。

于 2013-04-18T07:05:09.267 に答える
0

Runnable を実装する場合、次のように MyThread オブジェクトから Thread オブジェクトを作成する必要があります。

MyThread mt = new MyThread();
Thread t = new Thread(mt);

必ずしも

あなたはこれを行うことができます...

Thread t = new Thread(new Runnable () { public void run() { /* do stuff */ }});

... MyThread クラスは必要ありません。

于 2013-04-18T07:31:55.430 に答える
0

を呼び出すなど、スレッドの作業をある程度制御したい場合は、スレッドを拡張することをお勧めしますinterrup()Thread一般に、クラスがある種の Manger または Worker である場合、a の拡張は問題ないと思います。

それ以外の場合、特にクラスが実行すべき作業 ( Job, Future) を表している場合は、 runnable を実装する方がはるかに優れています

于 2013-04-18T07:17:25.407 に答える