
线程的优先级:
一个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");
- }
- }