1

私はこのようなコードを持っています:

Thread thread = new Thread(new Runnable()
    {
        @Override
        public void run()
        {
            //extremely time-consuming actions
        }
    });
thread.setPriority(Thread.MAX_PRIORITY);
thread.start();

スレッドは時間のかかるアクションを実行し、優先度も高くなります。

このスレッドは、システムの他のすべてのプログラムの中で優先度が高いのか、同じプログラムのスレッドと比較して優先度が高いのか知りたいですか?

4

3 に答える 3

2

優先度はプロセス内のスレッド内であり、プロセス間ではありません。JVM は優先順位を無視することを選択することさえあるため、プロセス自体の優先順位さえ保証されません。

JVM は、次のような Java スレッドの 10 の範囲の論理優先順位を定義します。

java.lang.Thread.MIN_PRIORITY = 1

java.lang.Thread.NORM_PRIORITY = 5

java.lang.Thread.MAX_PRIORITY = 10

これらの値 [1..10] は Thread.setPriority(int) に渡され、Java スレッドに優先順位を割り当てます。Java スレッドのデフォルトの優先度は NORM_PRIORITY です。(setPriority を明示的に呼び出さない Java スレッドは、NORM_PRIORITY で実行されます。) JVM は、 value を無視することを含め、任意の方法で優先度を自由に実装できます。

于 2013-04-10T05:49:09.760 に答える
0

基盤となるプラットフォームに依存するため、一般化するのは困難です。Java スレッドの優先度は OS スレッドの優先度にマップされ、通常は 1 対 1 のマッピングはありません。一部のプラットフォームでは、1 から 10 までの優先度レベルが提供されています。しかし、Java では 3 つのレベルしか提供されていません。

そのため、アプリケーションからの同じ優先度を持つすべてのスレッドと、独自のスレッドを均等かつ公平に扱うのは、OS の責任です。

于 2013-04-10T05:48:55.027 に答える