4

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

1) Java 言語が Thread と Runnable の両方を提供するのはなぜですか? 2) ランナブルに対するスレッドの利点は何ですか (Java がランナブルを提供できなかった理由)

4

2 に答える 2

11

1. Thread はクラスであり、Thread クラスのインスタンスにアタッチされた を.start()作成するとします。Runnableのメソッドを呼び出し、その上でタスクを実行させ、メソッドはすばやく戻ります。thread of execution run() thread of executionstart()

2. Runnableは にtask割り当てられたnewly created thread of executionです。

3. Threadクラスがなければ、Runnable を実行できません。

于 2012-08-18T17:41:20.530 に答える
4

1)スレッドはクラスであり、機能が含まれています-一方、ランナブルはインターフェースであるため、実装クラスが従うべき単なる「契約」です。Runnable は単なるインターフェースであるため、それを含むスレッドをインスタンス化する必要があります。thread には、スレッドを生成する機能が既に含まれています。

2) Runnable の実装が推奨される方法です。これは、Thread を拡張すると他のものを拡張できないためです (Java は多重継承をサポートしていません)。クラスに複数のインターフェースを持つことができるため、Runnable + 他の多くのものを持ち、別の基本クラスを拡張することもできます

3) Runnable のインスタンス化からスレッドを取得し、それをスリープさせます - this.sleep()

于 2012-08-18T17:42:38.937 に答える