Java
 Computer >> コンピューター >  >> プログラミング >> Java

マルチスレッドでの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」関数を使用して画面に印刷されます。


  1. Javaでスレッドを停止するにはどうすればよいですか?

    stop()を呼び出して、スレッドの実行状態を停止したいときはいつでも スレッドの方法 Javaのクラス。このメソッドは、実行中のスレッドの実行を停止し、待機中のスレッドプールとガベージコレクションからスレッドを削除します。スレッドは、メソッドの最後に到達すると、自動的にデッド状態に移行します。 stop() メソッドは非推奨です スレッドセーフによるJavaの場合 問題。 構文 @Deprecated public final void stop() 例 import static java.lang.Thread.currentThread; public class ThreadSto

  2. Javaのユーザースレッドとデーモンスレッド?

    デーモンスレッド 通常、ユーザースレッドのサービスを実行するために使用されます。 main()メソッド アプリケーションスレッドのユーザースレッド(非デーモンスレッド) 。 JVM すべてのユーザースレッド(デーモン以外)がない限り、終了しません 終了します。 ユーザースレッドによって作成されたスレッドを明示的に指定できます setDaemon(true)を呼び出してデーモンスレッドになる 。メソッドisDaemon()を使用して、スレッドがデーモンスレッドであるかどうかを判断するには 。 例 public class UserDaemonThreadTest extends Thre