在C#中,每一个线程都有一个优先级属性,用来影响操作系统对线程的调度倾向。通过Thread类的Priority属性,我们可以很方便地获取和显示线程的优先级信息。下面先看一张示意图了解基本结构。

线程优先级的基本概念
C#中的线程优先级由ThreadPriority枚举定义,包含Lowest、BelowNormal、Normal、AboveNormal和Highest五个级别。默认情况下,新建线程的优先级为Normal。我们可以通过代码读取Thread.Priority来显示具体值。
使用C#显示线程优先级的示例程序
下面的程序创建了三个线程,分别设置不同的优先级,并输出它们的Id与优先级。注意在输出时直接访问Priority属性即可。
using System;
using System.Threading;
class Program
{
static void Main()
{
// 创建三个线程,指向同一个工作方法
Thread t1 = new Thread(Work);
Thread t2 = new Thread(Work);
Thread t3 = new Thread(Work);
// 设置不同的优先级
t1.Priority = ThreadPriority.Lowest;
t2.Priority = ThreadPriority.Normal;
t3.Priority = ThreadPriority.Highest;
// 启动线程
t1.Start("线程A");
t2.Start("线程B");
t3.Start("线程C");
// 等待所有线程结束
t1.Join();
t2.Join();
t3.Join();
}
static void Work(object name)
{
// 显示当前线程Id与优先级
Console.WriteLine("名称: {0}, Id: {1}, 优先级: {2}",
name,
Thread.CurrentThread.ManagedThreadId,
Thread.CurrentThread.Priority);
}
}
代码说明
- 使用
Thread类构造函数传入线程执行方法。 - 通过赋值t1.Priority等语句设置线程优先级。
- 在Work方法内部,用Thread.CurrentThread.Priority显示当前线程优先级。
- 调用Join方法确保主线程等待子线程完成输出。
注意事项
虽然可以设置线程优先级,但实际调度仍由操作系统控制,高优先级不一定绝对先执行。在调试和教学场景中,显示线程优先级有助于理解多线程模型,但在生产环境应谨慎调整优先级以免影响稳定性。