• C#__线程的优先级和状态控制


             线程的优先级:
            一个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状态,直到加入的线程完成为止。

    1. class Program
    2. {
    3. /*
    4. 线程的优先级:
    5. 一个CPU同一时刻只能做一件事情,哪个线程优先级高哪个先运行,优先级相同看调度算法。
    6. 在Thread类中的Priority属性(Highest,Above,Normal,BelowNormal,Lowest)可以影响线程的优先级
    7. */
    8. /*
    9. 控制线程:
    10. 线程的状态(Runing,Unstarted),线程调用Start方法后,新线程处于Unstarted状态,只有当操作系统调用线程运行时为Runing状态。
    11. 线程休眠 Thread.Sleep()方法,可以让线程进入WaitSleepJoin状态
    12. 终止线程 Thread.Abort()方法,可能会出现ThreadAbortException类型的异常,可以使用try{}catch{}处理这个异常,并在线程结束前做些清理工作。
    13. 需要等待线程结束 Thread.Jion()方法,表示把Thread加入进来,停止当前线程,并把它设置为WaitSleepJion状态,直到加入的线程完成为止。
    14. */
    15. static void test1()
    16. {
    17. int i = 1;
    18. while (i < 100)
    19. {
    20. Console.Write("A");
    21. Thread.Sleep(100);
    22. i++;
    23. }
    24. }
    25. static void test2()
    26. {
    27. while (true)
    28. {
    29. Console.Write("B");
    30. Thread.Sleep(100);
    31. }
    32. }
    33. static void Main(string[] args)
    34. {
    35. Thread a = new Thread(test1);
    36. Thread b = new Thread(test2);
    37. a.Priority = ThreadPriority.Highest;
    38. b.Priority = ThreadPriority.Lowest;
    39. a.Start();
    40. b.Start();
    41. a.Join();
    42. b.Join();
    43. //ABABABABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB……
    44. // 不运行完b线程不会往后执行
    45. a.Abort();
    46. b.Abort();
    47. Console.WriteLine("Hello");
    48. }
    49. }

  • 相关阅读:
    习题1.24
    海思3559万能平台搭建:获取数据帧修改后编码
    web课程设计网页规划与设计----公司官网带轮播图 (页面精美 1页)
    PLC中获取输入信号上升沿或下降沿的具体方法示例
    求算法工程师做访谈 绝对真实
    WebLOAD: 一站式性能测试工具
    类加载过程
    【Linux集群教程】02 高可用集群
    再读scrum敏捷革命
    如何在Android应用程序中实现高效的图片加载和缓存机制。
  • 原文地址:https://blog.csdn.net/qq_57233919/article/details/132748168