重複の可能性:
Java: 「ランナブルを実装する」対「スレッドを拡張する」
1) Java 言語が Thread と Runnable の両方を提供するのはなぜですか? 2) ランナブルに対するスレッドの利点は何ですか (Java がランナブルを提供できなかった理由)
重複の可能性:
Java: 「ランナブルを実装する」対「スレッドを拡張する」
1) Java 言語が Thread と Runnable の両方を提供するのはなぜですか? 2) ランナブルに対するスレッドの利点は何ですか (Java がランナブルを提供できなかった理由)
1. Thread はクラスであり、Thread クラスのインスタンスにアタッチされた を.start()
作成するとします。Runnableのメソッドを呼び出し、その上でタスクを実行させ、メソッドはすばやく戻ります。thread of execution
run()
thread of execution
start()
2. Runnable
は にtask
割り当てられたnewly created thread of execution
です。
3. Threadクラスがなければ、Runnable を実行できません。
1)スレッドはクラスであり、機能が含まれています-一方、ランナブルはインターフェースであるため、実装クラスが従うべき単なる「契約」です。Runnable は単なるインターフェースであるため、それを含むスレッドをインスタンス化する必要があります。thread には、スレッドを生成する機能が既に含まれています。
2) Runnable の実装が推奨される方法です。これは、Thread を拡張すると他のものを拡張できないためです (Java は多重継承をサポートしていません)。クラスに複数のインターフェースを持つことができるため、Runnable + 他の多くのものを持ち、別の基本クラスを拡張することもできます
3) Runnable のインスタンス化からスレッドを取得し、それをスリープさせます - this.sleep()