-3

Java スレッドには、開始、終了、およびシーケンスを含めることができますが、それはどういう意味ですか?

4

2 に答える 2

1

それが意味するのは、スレッドが一連のアクションを実行することだけだと思います。正直に言うと、その概念をかなりうまく表現していません。

言い換えると:

  • を作成しThread、理想的には を渡しますRunnable。(代わりに拡張Threadしてそのメソッドをオーバーライドすることもできますrunが、それは一般的に嫌われています。)
  • あなたはそれを呼びstartます
  • 呼び出したスレッドstartは、そのプログラム内の次のステートメントを実行し続けます
  • メソッドは、それrunを開始したスレッドとは関係なく、別のスレッドで実行されます。ここでの動作は、「シーケンス」が意味すると私が信じているものです
  • 新しいスレッドは、次のいずれかの条件により最終的に終了します。
    • そのrunメソッドは正常に完了します
    • そのrunメソッドは例外で完了します
    • デーモンスレッドの場合、すべての非デーモンスレッドが終了するため、JVM 終了の一部として終了する可能性があります。
于 2012-08-17T06:57:45.157 に答える
0

Java プログラムでは、スレッドを作成しますが、それらは Java だけでは実行されません。Java は、基盤となる OS の助けを借りてそれらを実行します。マイクロプロセッサの時間を割り当て、すべてのスレッドの実行を監視するために、OS にはThread Schedulerが付属しています。スレッドの実行順序を維持する責任はすべて、スレッド スケジューラが負っています。つまり、どのスレッドが他のスレッドより優先されるかは、スレッド スケジューラにあります。スケジューリングは、スケジューラーのアルゴリズムに依存します。プリエンプティブラウンド ロビンによるタイム スライスなど、さまざまな種類のアルゴリズムが存在します。これは、特定の時間内に何度も実行される非常に複雑なアルゴリズムです。
スケジューラは、スレッドのプールを維持します。Java スレッドがメソッドの呼び出しを開始するとstart()、待機中のスレッドのプールに参加します。

スレッド
1 の状態。新しい状態: Thread インスタンスの作成後、スレッドはこの状態にありますが、start() メソッドの呼び出し前です。この時点で、スレッドは活動していないと見なされます。

2. Runnable (Ready-to-run) 状態 : スレッドは Runnable 状態からライフを開始します。メソッドの呼び出し後、スレッドは最初に実行可能な状態に入りますstart()が、スレッドは、実行中、待機中、スリープ状態、またはブロック状態から戻った後にも、この状態に戻ることができます。この状態では、スレッドはプロセッサのターンを待っています。

3. 実行中の状態 :スレッドが現在実行中であることを意味する実行中の状態です。Runnable 状態に入る方法はいくつかありますが、Runnable 状態に入る方法は 1 つしかありません。それは、スケジューラが Runnable プールからスレッドを選択することです。

4. デッド状態 :run()メソッドが完了すると、スレッドはデッドと見なされます。この状態になったスレッドは、二度と実行できないことを意味します。
5. ブロック : - 別のスレッドが保持しているリソースを待機しているため、スレッドがこの状態になる可能性があります。

ここに画像の説明を入力

于 2012-08-17T07:36:45.177 に答える