当前位置: 首页 > news >正文

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状态,直到加入的线程完成为止。

    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");}}

http://www.lryc.cn/news/158944.html

相关文章:

  • 103.36.167.X在服务器删除、复制文件的时候会出现卡的情况,是什么原因?
  • Vim 插件应用篇 vim-plug:简洁高效的Vim插件管理工具
  • springboot 请求https的私有证书验证
  • YOLO的基本原理详解
  • 【UE 材质】制作飘动的旗帜
  • windows苹果商店上架ipa(基于appuploader)
  • 什么是SpringCloud Eureka服务注册与发现
  • A Mathematical Framework for Transformer Circuits—Part (1)
  • 关于Maven中使用idea发布java项目的步骤:
  • 如何使用ArcGIS Earth制作地图动画视频
  • 【Linux成长史】Linux基本指令大全
  • ChatGPT:深度学习和机器学习的知识桥梁
  • python-基本数据类型-笔记
  • 如何使用API数据接口给自己创造收益
  • 第三方软件信息安全测评服务范围
  • 测试开发 | Java 接口自动化测试首选方案:REST Assured 实践
  • vue3:13、Vue3.3新特性-defineModel
  • 如何理解C++中的void*
  • MVC,MVP,MVVM的理解和区别
  • 【TypeScript】一直提示 :无法重新声明块范围变量
  • 【python自动化】七月PytestAutoApi开源框架学习笔记(一)
  • Python学习 -- logging模块
  • 【socket】getaddrinfo、getsockname、getpeername对比
  • 【MySQL】表的增删改查(进阶)
  • 关于安卓13中Android/data目录下的文件夹只能查看无法进行删改的问题
  • Vulnhub: Masashi: 1靶机
  • 校园二手物品交易系统微信小程序设计
  • Pixillion Pro for Mac:将您的图像转换为艺术佳作
  • 【上海迪士尼度假区】技术解决方案
  • 每日刷题-2