版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
线程的基本操作本讲大纲:1、线程基础——Thread类支持网站:2、线程的创建3、线程的挂起与恢复4、线程休眠5、终止线程6、线程的优先级线程基础——Thread类
Thread类位于System.Threading命名空间下,System.Threading命名空间提供一些使得可以进行多线程编程的类和接口。除同步线程活动和访问数据的类(Mutex、Monitor、Interlocked和AutoResetEvent等)外,该命名空间还包含一个ThreadPool类(它允许用户使用系统提供的线程池)和一个Timer类(它在线程池线程上执行回调方法)。Thread类主要用于创建并控制线程、设置线程优先级并获取其状态。一个进程可以创建一个或多个线程以执行与该进程关联的部分程序代码,线程执行的程序代码由ThreadStart委托或ParameterizedThreadStart委托指定。线程运行期间,不同的时刻会表现为不同的状态,但它总是处于由ThreadState定义的一个或多个状态中。用户可以通过使用ThreadPriority枚举为线程定义优先级,但不能保证操作系统会接受该优先级。属性说明CurrentThread获取当前正在运行的线程IsAlive获取一个值,该值指示当前线程的执行状态Name获取或设置线程的名称Priority获取或设置一个值,该值指示线程的调度优先级ThreadState获取一个值,该值包含当前线程的状态方法说明Abort在调用此方法的线程上引发ThreadAbortException,以开始终止此线程的过程。调用此方法通常会终止线程Join阻止调用线程,直到某个线程终止时为止ResetAbort取消为当前线程请求的AbortResume继续已挂起的线程Sleep将当前线程阻止指定的毫秒数Start使线程被安排进行执行Suspent挂起线程,或者如果线程已挂起,则不起作用线程的创建
创建一个线程非常简单,只需将其声明并为其提供线程起始点处的方法委托即可。创建新的线程时,需要使用Thread类,Thread类具有接受一个ThreadStart委托或ParameterizedThreadStart委托的构造函数,该委托包装了调用Start方法时由新线程调用的方法。创建了Thread类的对象之后,线程对象已存在并已配置,但并未创建实际的线程,这时,只有在调用Start方法后,才会创建实际的线程。
Start方法用来使线程被安排进行执行,它有两种重载形式,下面分别介绍。(1)导致操作系统将当前实例的状态更改为ThreadState.Running。语法:publicvoidStart()(2)使操作系统将当前实例的状态更改为ThreadState.Running,并选择提供包含线程执行的方法要使用的数据的对象。语法:publicvoidStart(Objectparameter)说明:parameter表示一个对象,包含线程执行的方法要使用的数据。线程的挂起与恢复线程的挂起与恢复分别可以通过调用Thread类中的Suspend方法和Resume方法实现,
1.Suspend方法该方法用来挂起线程,如果线程已挂起,则不起作用,语法如下。
publicvoidSuspend()说明:调用Suspend方法挂起线程时,.NET允许要挂起的线程再执行几个指令,目的是为了到达.NET认为线程可以安全挂起的状态。2.Resume方法该方法用来继续已挂起的线程,语法如下。
publicvoidResume()说明:通过Resume方法来恢复被暂停的线程时,无论调用了多少次Suspend方法,调用Resume方法均会使另一个线程脱离挂起状态,并导致该线程继续执行。线程休眠线程休眠主要通过Thread类的Sleep方法实现,该方法用来将当前线程阻止指定的时间,它有两种重载形式,下面分别进行介绍。(1)将当前线程挂起指定的时间,语法如下。
publicstaticvoidSleep(intmillisecondsTimeout)millisecondsTimeout:线程被阻止的毫秒数。指定零以指示应挂起此线程以使其他等待线程能够执行,指定Infinite以无限期阻止线程。(2)将当前线程阻止指定的时间,语法如下。
publicstaticvoidSleep(TimeSpantimeout)timeout:线程被阻止的时间量的TimeSpan。指定零以指示应挂起此线程以使其他等待线程能够执行,指定Infinite以无限期阻止线程。例如:
Thread.Sleep(1000); //使线程休眠一秒钟终止线程终止线程可以分别使用Thread类的Abort方法和Join方法实现,下面对这两个方法进行详细介绍。1.Abort方法它的两种重载方式如下:
publicvoidAbort()publicvoidAbort(ObjectstateInfo)stateInfo:一个对象,它包含应用程序特定的信息(如状态),该信息可供正被终止的线程使用。2.Join方法它的3种重载方式如下:
publicvoidJoin()publicboolJoin(intmillisecondsTimeout)publicboolJoin(TimeSpantimeout)millisecondsTimeout:等待线程终止的毫秒数。timeout:等待线程终止的时间量的TimeSpan。线程的优先级
线程优先级指定一个线程相对于另一个线程的相对优先级。每个线程都有一个分配的优先级。在公共语言运行库内创建的线程最初被分配为Normal优先级,而在公共语言运行库外创建的线程,在进入公共语言运行库时将保留其先前的优先级。线程是根据其优先级而调度执行的,用于确定线程执行顺序的调度算法随操作系统的不同而不同。在某些操作系统下,具有最高优先级(相对于可执行线程而言)的线程经过调度后总是首先运行。如果具有相同优先级的多个线程都可用,则程序将遍历处于该优先级的线程,并为每个线程提供一个固定的时间片来执行。只要具有较高优先级的线程可以运行,具有较低优先级的线程就不会执行。如果在给定的优先级上不再有可运行的线程,则程序将移到下一个较低的优先级并在该优先级上调度线程以执行。如果具有较高优先级的线程可以运行,则具有较低优先级的线程将被抢先,并允许具有较高优先级的线程再次执行。除此之外,当应用程序的用户界面在前台和后台之间移动时,操作系统还可以动态调整线程优先级。开发人员可以通过访问线程的Priority属性来获取和设置其优先级。Priority属性用来获取或设置一个值,该值指示线程的调度优先级。语法:publicThreadPriorityPriority{get;set;}说明:属性值为ThreadPriority类型的枚举值之一,默认值为Normal。优先级值说明AboveNormal可以将Thread安排在具有Highest优先级的线程之后,在具有Normal优先级的线程之前BelowNormal可以将Thread安排在具有Normal优先级的线程之后,在具有Lowest优先级的线程之前Highest可以将Thread安排在具
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度合作开发合同:旅游度假区合作开发协议2篇
- 2024年度城市供水管网扩建工程合同
- 全新环保设备研发与生产合同(2024版)2篇
- 2024年度房地产销售合同:某开发商与购房者之间的房屋销售2篇
- 房屋租赁与装修改造2024年度合同
- 2024年军训个人总结模板1000字
- 中风诊疗方案培训
- 物品在库管理
- 轴线翻身法护理
- 宫外孕手术手术室护理查房
- HG∕T 3704-2003 氟塑料衬里阀门通 用技术条件
- 08SS704 混凝土模块式化粪池
- DL∕T 1845-2018 电力设备高合金钢里氏硬度试验方法
- 2024年全国各地中考语文真题分类汇编【第二辑】专题07 文言文对比阅读(含答案)
- 医院消除三病母婴传播工作总结汇报
- 质量环境职业健康安全管理体系三合一整合全套体系文件(管理手册+程序文件)
- 部编版九年级上册语文期末复习资料
- 电缆敷设施工方案
- 氧气吸入操作评分标准(中心供氧)
- CJJ95-2013 城镇燃气埋地钢质管道腐蚀控制技术规程
- 23《鸟的天堂》第二课时(教案)语文五年级上册部编版
评论
0/150
提交评论