线程的优先级:
一个CPU同一时刻只能做一件事情,哪个线程优先级高哪个先运行,优先级相同看调度算法。
在Thread类中的Priority属性(Highest,Above,Normal,BelowNormal,Lowest)可以影响线程的优先级
关于线程的一些状态:
线程的状态(Runing,Unstarted),线程调用Start方法后,新线程处于Unstarted状态,只有当操作系统调用线程运行时为Runing状态。
线程休眠 Thread.Sleep()方法,可以让线程进入WaitSleepJoin状态
终止线程 Thread.Abort()方法,可能会出现ThreadAbortException类型的异常,可以使用try{}catch{}处理这个异常,并在线程结束前做些清理工作。
需要等待线程结束 Thread.Jion()方法,表示把Thread加入进来,停止当前线程,并把它设置为WaitSleepJion状态,直到加入的线程完成为止。
class Program
{
/*
线程的优先级:
一个CPU同一时刻只能做一件事情,哪个线程优先级高哪个先运行,优先级相同看调度算法。
在Thread类中的Priority属性(Highest,Above,Normal,BelowNormal,Lowest)可以影响线程的优先级
*/
/*
控制线程:
线程的状态(Runing,Unstarted),线程调用Start方法后,新线程处于Unstarted状态,只有当操作系统调用线程运行时为Runing状态。
线程休眠 Thread.Sleep()方法,可以让线程进入WaitSleepJoin状态
终止线程 Thread.Abort()方法,可能会出现ThreadAbortException类型的异常,可以使用try{}catch{}处理这个异常,并在线程结束前做些清理工作。
需要等待线程结束 Thread.Jion()方法,表示把Thread加入进来,停止当前线程,并把它设置为WaitSleepJion状态,直到加入的线程完成为止。
*/
static void test1()
{
int i = 1;
while (i < 100)
{
Console.Write("A");
Thread.Sleep(100);
i++;
}
}
static void test2()
{
while (true)
{
Console.Write("B");
Thread.Sleep(100);
}
}
static void Main(string[] args)
{
Thread a = new Thread(test1);
Thread b = new Thread(test2);
a.Priority = ThreadPriority.Highest;
b.Priority = ThreadPriority.Lowest;
a.Start();
b.Start();
a.Join();
b.Join();
//ABABABABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB……
// 不运行完b线程不会往后执行
a.Abort();
b.Abort();
Console.WriteLine("Hello");
}
}