C#でスレッドの優先度を表示する方法|Priorityプロパティの使い方
C#でスレッドの優先度を表示するには
C#でスレッドの優先度を確認するには、Priorityプロパティを使用します。このプロパティは、OSがスレッドをどの程度の優先順位でスケジューリングするかを示す値を返します。
まず、CurrentThreadプロパティを使って、現在実行中のスレッドの情報を取得します。
Thread thread = Thread.CurrentThread;
次に、thread.Priorityプロパティを参照することで、そのスレッドの優先度を表示できます。
thread.Priority
サンプルコード
C#でスレッドの優先度を表示する完全なコード例を見てみましょう。
using System;
using System.Threading;
namespace Demo {
class MyClass {
static void Main(string[] args) {
// 現在実行中のスレッドを取得
Thread thread = Thread.CurrentThread;
// スレッドに名前を設定
thread.Name = "My Thread";
// スレッドの優先度を表示
Console.WriteLine("Thread Priority = {0}", thread.Priority);
Console.ReadKey();
}
}
}
実行結果
Thread Priority = Normal
補足:スレッドの優先度レベルについて
C#では、ThreadPriority列挙体によって以下の5段階の優先度が定義されています。
- Highest – 最も高い優先度
- AboveNormal – 通常より高い優先度
- Normal – 通常の優先度(既定値)
- BelowNormal – 通常より低い優先度
- Lowest – 最も低い優先度
新しく作成されたスレッドの優先度は、既定で「Normal」に設定されます。優先度はthread.Priorityプロパティに値を代入することで変更できますが、高い優先度を乱用すると他のスレッドが実行機会を得られなくなる「スタベーション(飢餓状態)」が発生する恐れがあるため、設定には注意が必要です。
-
Javaスレッドの優先度とは?マルチスレッドにおける優先順位の基本と設定方法
Javaスレッドの優先度とはマルチスレッド環境では、スレッドスケジューラが各スレッドの優先度に基づいて、どのスレッドにCPUを割り当てるかを決定します。Javaのスレッドにはあらかじめデフォルトの優先度が割り当てられており、JVM(Java仮想マシン)が自動的に設定するほか、プログラマが明示的に指定することも可能です。スレッドの優先度は、1から10までの整数値(両端を含む)で表されます。優先度に関連する静的変数として、以下の3つが定義されています。MAX_PRIORITY:スレッドに設定できる最大の優先度。デフォルト値は10。NORM_PRIORITY:スレッドの標準的な優先度。デフォルト値は
-
Javaにおけるスレッド優先度とは?仕組みと設定方法をわかりやすく解説
マルチスレッドアプリケーションでは、各スレッドに優先度が割り当てられます。プロセッサはスレッドスケジューラによって、この優先度に基づいて各スレッドへ割り当てられます。つまり、優先度が最も高いスレッドから順にCPUが割り当てられていく仕組みです。スレッドのデフォルト優先度は「5」であり、Threadクラスが提供するgetPriority()メソッドを使うことで、任意のスレッドの現在の優先度を取得できます。Threadクラスで定義されている3つの静的定数JavaのThreadクラスには、スレッドの優先度を表すために以下の3つの静的な値(定数)が定義されています。MAX_PRIORITYスレッドに設