マルチスレッドでのJavaスレッドの優先順位
マルチスレッドの状況では、スレッドスケジューラは、優先度に基づいて特定のプロセスにスレッドを割り当てます。 Javaスレッドには、事前に割り当てられた優先度があります。これに加えて、Java仮想マシンは、スレッドに優先順位を割り当てたり、プログラマーによって明示的に与えられたりすることもできます。スレッドの優先度の値の範囲は、1から10(両端を含む)です。優先度に関連付けられている3つの静的変数は-
です。-
MAX_PRIORITY-スレッドの最大優先度。デフォルト値は10です。
-
NORM_PRIORITY-スレッドが持つデフォルトの優先度。デフォルト値は5です。
-
MIN_PRIORITY-スレッドが持つ最小の優先度。デフォルト値は1です。
Javaの「getPriority()」メソッドは、値としてバインドされたスレッドの優先度を返すのに役立ちます。
「setPriority()」メソッドは、特定のスレッドの優先度の値を変更します。スレッドの優先度が1未満または10より大きい場合、IllegalArgumentExceptionがスローされます。
例
import java.lang.*; public class Demo extends Thread{ public void run(){ System.out.println("Now, inside the run method"); } public static void main(String[]args){ Demo my_thr_1 = new Demo(); Demo my_thr_2 = new Demo(); System.out.println("The thread priority of first thread is : " + my_thr_1.getPriority()); System.out.println("The thread priority of first thread is : " + my_thr_2.getPriority()); my_thr_1.setPriority(5); my_thr_2.setPriority(3); System.out.println("The thread priority of first thread is : " + my_thr_1.getPriority()); System.out.println("The thread priority of first thread is : " + my_thr_2.getPriority()); System.out.print(Thread.currentThread().getName()); System.out.println("The thread priority of main thread is : " + Thread.currentThread().getPriority()); Thread.currentThread().setPriority(10); System.out.println("The thread priority of main thread is : " + Thread.currentThread().getPriority()); } }
出力
The thread priority of first thread is : 5 The thread priority of first thread is : 5 The thread priority of first thread is : 5 The thread priority of first thread is : 3 The thread priority of main thread is : 5 The thread priority of main thread is : 10
Demoという名前のクラスは、基本クラスThreadから継承します。関数「実行」が定義され、関連するメッセージが定義されます。 main関数では、Demoクラスの2つのインスタンスが作成され、関数「getPriority」を呼び出すことでそれらの優先度が検出されます。
それらはコンソールに印刷されます。次に、「setPriority」関数を使用して、デモインスタンスに優先度が割り当てられます。出力がコンソールに表示されます。スレッドの名前は、「getName」関数を使用して画面に印刷されます。
-
Javaでスレッドを停止するにはどうすればよいですか?
stop()を呼び出して、スレッドの実行状態を停止したいときはいつでも スレッドの方法 Javaのクラス。このメソッドは、実行中のスレッドの実行を停止し、待機中のスレッドプールとガベージコレクションからスレッドを削除します。スレッドは、メソッドの最後に到達すると、自動的にデッド状態に移行します。 stop() メソッドは非推奨です スレッドセーフによるJavaの場合 問題。 構文 @Deprecated public final void stop() 例 import static java.lang.Thread.currentThread; public class ThreadSto
-
Javaのユーザースレッドとデーモンスレッド?
デーモンスレッド 通常、ユーザースレッドのサービスを実行するために使用されます。 main()メソッド アプリケーションスレッドのユーザースレッド(非デーモンスレッド) 。 JVM すべてのユーザースレッド(デーモン以外)がない限り、終了しません 終了します。 ユーザースレッドによって作成されたスレッドを明示的に指定できます setDaemon(true)を呼び出してデーモンスレッドになる 。メソッドisDaemon()を使用して、スレッドがデーモンスレッドであるかどうかを判断するには 。 例 public class UserDaemonThreadTest extends Thre