让无涯教程看一个示例,其中正在更改线程的优先级。可以首先执行高优先级线程。但这不能保证,因为线程高度依赖于系统。它增加了高优先级线程在低优先级线程之前执行的机会。
using System;
using System.Threading;
public class MyThread
{
public void Thread1()
{
Thread t = Thread.CurrentThread;
Console.WriteLine(t.Name+" is running");
}
}
public class ThreadExample
{
public static void Main()
{
MyThread mt = new MyThread();
Thread t1 = new Thread(new ThreadStart(mt.Thread1));
Thread t2 = new Thread(new ThreadStart(mt.Thread1));
Thread t3 = new Thread(new ThreadStart(mt.Thread1));
t1.Name = "Player1";
t2.Name = "Player2";
t3.Name = "Player3";
t3.Priority = ThreadPriority.Highest;
t2.Priority = ThreadPriority.Normal;
t1.Priority = ThreadPriority.Lowest;
t1</span><span class="pun">.</span><span class="typ">Start</span><span class="pun">();</span><span class="pln">
t2</span><span class="pun">.</span><span class="typ">Start</span><span class="pun">();</span><span class="pln">
t3</span><span class="pun">.</span><span class="typ">Start</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
}
输出:
输出是不可预测的,因为线程高度依赖于系统。它可以遵循任何抢占式或非抢占式算法。
Player1 is running Player3 is running Player2 is running