6

Javaスレッドの状態を見るだけです:

NEW
A thread that has not yet started is in this state.
RUNNABLE
A thread executing in the Java virtual machine is in this state.
BLOCKED
A thread that is blocked waiting for a monitor lock is in this state.
WAITING
A thread that is waiting indefinitely for another thread to perform a particular action is in this state.
TIMED_WAITING
A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.
TERMINATED
A thread that has exited is in this state.

アイドル状態がないのはなぜですか?または、どの状態がアイドル スレッドを最もよく表しているでしょうか? CPU上で実行されていないだけですか
RUNNING

4

2 に答える 2

11

余談ですがNEWTERMINATED「アイドル」とは「何かを待っている」という意味です。これには、次のすべてが含まれます。

BLOCKED
WAITING
TIMED_WAITING

RUNNINGCPU上で実行されていないだけですか?

ありませんRUNNING、ありRUNNABLEます。これはおおまかに言うと「やりたいことがある」という意味ですが、スレッドが現在実際に実行されているかどうかについては何も述べていません (コアが利用可能になるのを待っている可能性があります)。

于 2013-03-29T10:03:20.057 に答える
3

ブロックされたスレッドは、遅いリソースや共有リソースを呼び出したスレッドです。呼び出しが戻るまでスレッドは続行できないため、スレッドはアイドル状態になります。

WAITING と TIMED_WAITING は、スレッドが別のスレッドを (何らかのリソースではなく) 待機しているときであり、他のスレッドが再開を許可するまでアイドル状態になります。

NEW は、まだ CPU でスケジュールされていません。これは本質的に RUNNABLE ですが、これは作成されたばかりであるという事実を示しています。私は個人的にこれをアイドルとは考えていません。

RUNNABLE は、実行中であるか、CPU に割り当てられるのを待っていることを意味します。

于 2013-03-29T10:10:47.283 に答える