私はJavaの初心者です。1つの疑い。
内部的には、Thread クラスのrun()
メソッドが Runnable インターフェイスのrun()
.
私の質問は、
Thread クラスのrun()
メソッドが Runnable インターフェイスの を呼び出す方法はrun()
?
前もって感謝します。
私はJavaの初心者です。1つの疑い。
内部的には、Thread クラスのrun()
メソッドが Runnable インターフェイスのrun()
.
私の質問は、
Thread クラスのrun()
メソッドが Runnable インターフェイスの を呼び出す方法はrun()
?
前もって感謝します。
Runnable インターフェースには、run()
メソッドだけが含まれています。クラスはThread
実際にRunnable
インターフェースを実装します。
したがって、Thread クラスから継承すると、サブクラスも Runnable インターフェースを実装します。
以下に例を示します。
import java.applet.Applet;
public class OurApplet extends Applet {
public void init() {
Runnable ot = new OurClass();
Thread th = new Thread(ot);
th.start();
}
}
新しい Thread オブジェクトのstart()
メソッドが呼び出され、新しい制御スレッドの実行が開始されます。
実行可能なオブジェクトをスレッド オブジェクトのコンストラクターに渡す必要がある理由はrun()
、スレッドに実行させたいメソッドに到達するための何らかの方法がスレッドに必要だからです。Thread クラスのメソッドをオーバーライドしなくなったためrun()
、Thread クラスのデフォルトrun()
メソッドが実行されます。このデフォルトの run() メソッドは次のようになります。
public void run() {
if (target != null) {
target.run();
}
}
target
は、スレッドのコンストラクターに渡した実行可能なオブジェクトです。そのため、スレッドは Thread クラスのメソッドで実行を開始し、run()
すぐにrun()
実行可能なオブジェクトのメソッドを呼び出します。