0

複数のスレッドを使用するプログラムを作成する必要があります。スレッドオブジェクトを作成した後、run()メソッドを使用する必要があります。このrunメソッドは組み込まれているようです。ただし、これを作成する必要があり、呼び出されるたびにループを実行する必要があります。誰かが私がこれを行う方法を理解するのを手伝ってもらえますか?

4

3 に答える 3

1

Threadインターフェイスの匿名実装を渡すことで新しいインスタンスを作成し、Runnableそのメソッドを使用しstart()てスレッドの実行を開始できます。下記参照:

Thread t = new Thread(new Runnable() {
  public void run() {
    while (!stopped) {
      // do something interesting here
    }
  }
});
t.start();
于 2012-09-11T19:58:57.623 に答える
0

メソッドがクラスrun()に組み込まれているのはまったく正常なことです。Threadこのクラスは、実行のスレッドを表すアプリケーション内の任意のクラスに基本的なインフラストラクチャを提供することを目的としています。Thread「世界のあらゆるスレッド」と考えてください。これをアプリケーションで使用する正しい方法は、を継承 Threadする独自のクラスを提供することです。これはextends、Danの回答のように、キーワードまたは匿名クラスを使用して行われます。Threadクラスを拡張し、クラスを呼び出したとしましょうTaskToRunInParallel

ドキュメントには、Threadクラスは特別であると記載されています。クラスを継承し(先ほど行ったように)run()、独自のクラスのメソッドにコードを配置すると(TaskToRunInParallelこの場合)、このコードはアプリケーションの他の部分と並行して実行されます。あなたがする必要があるstart()のは、クラスのオブジェクトを呼び出すことだけですTaskToRunInParallel

これが、メソッドが組み込まれている理由run()です。独自のクラスでオーバーライドするためのプロトタイプメソッドを提供します。このようにして、オブジェクトを操作するコードはすべて、オブジェクト、またはから継承する他のクラスを操作Threadできるようになります。本当に:それらすべてがメソッドを継承することが保証されており、そのコードがそれを安全に呼び出すことができます。ただし、この呼び出しの結果は常に異なります。から継承する各クラスは、独自の方法でオーバーライドできます。これはポリモーフィズムと呼ばれ、継承とともにオブジェクト指向プログラミングの基礎の1つです。TaskToRunInParallelThreadrun()ThreadThreadrun()

run()クラスのメソッドをオーバーライドすることを考えると、いくつの概念が関係しているのかは驚くべきことですThread。幸運を。

于 2012-09-11T22:18:20.517 に答える
0

見る:

セマフォのカウント http://tutorials.jenkov.com/java-concurrency/semaphores.html#counting

于 2012-09-11T19:58:18.200 に答える