4

私はJavaの初心者です。1つの疑い。

内部的には、Thread クラスのrun()メソッドが Runnable インターフェイスのrun().

私の質問は、

Thread クラスのrun()メソッドが Runnable インターフェイスの を呼び出す方法はrun()?

前もって感謝します。

4

2 に答える 2

5

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()実行可能なオブジェクトのメソッドを呼び出します。

于 2011-07-09T02:03:40.387 に答える