メソッドを実行するgetcurrentthread.priority
と、スレッドの優先度が 5 になることがわかっています。Main メソッドよりも優先度の高いスレッドの答えを得ることができません。
3 に答える
これはどういうわけか優先キュー内のスレッドのインデックスであり、したがって少なくとも 4 つの他のスレッドが存在する必要があることを意味していると思います。
これはインデックスではなく、VM だけでなくシステムでも優先度を他の同時スレッドと比較するために使用される値です。実際、スレッドは同じ優先度を持つことができます。
補足:スレッドの優先順位を設定するときは、常に定数 MIN_PRIORITY
とNORM_PRIORITY
を使用してMAX_PRIORITY
ください。中間値が必要な場合は、定数を使用して計算します。
int mediumHighPriority = (Thread.NORM_PRIORITY+Thread.MAX_PRIORITY)/2;
値ではなく定数を使用する場合、定数値は将来変更される可能性があります (より広い範囲を持つことができます。または、数値が小さいほど優先度が高くなるように逆にすることもできます)。保存側でコードが読みやすくなります。
Java アプリケーションが開始されると、JVM はメイン ThreadGroup をシステム ThreadGroup のメンバーとして作成し、優先度をデフォルト (つまり NORM_PRIORITY) に設定します。
ただし、これは現在の Java プログラムのスレッドにのみ適用され、OS の他のプロセスで実行されている他のすべてのスレッドに関する情報は提供されません。
ThreadGroupを介して現在のプログラム内のすべてのスレッドを列挙できます。たとえば、この回答を参照してください。