mysql 暂停其它线程_如何暂停和终止线程

你能看到这篇文章,说明你已经知道如何创建线程了,因此,这里就不说明线程的创建了,详细说一下线程的暂停和终止。

我们首先了解一下,什么是前台线程和后台线程。

.Net的公用语言运行时(CLR)能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。

对于如何暂停和继续线程的运行,在.net2.0之后,Suspend 、Resume 这两种方法都已停止使用,MS官方推荐使用标记判断的方式来处理线程的暂停与继续。

对于线程的终止,在该线程处理完该线程的指定任务,退出该线程执行任务的函数后,线程状态将改变为"Stopped",然后分别依前台线程和后台线程的区别,在应用程序退出时线程会自动结束。因此,如果我们想使某个线程停止执行,就使该线程所执行的函数执行完毕就可以了。

在使用多线程处理任务时,如果线程间的同步对象不是原子数值,而是类等引用类型,如果线程有写入的情况,则必须保证某一时刻只有一个线程能够写入,这就需要线程互斥,一般情况下,使用lock关键词处理。

互斥与同步

互斥和同步是两个紧密相关而又容易混淆的概念。

互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源,如“第一类读写者模型”。

对于在线程调用的方法中向外传递数据,使用事件向执行该方法的对象传递需要发送出的数据。

下面,是我测试的代码:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Text;4 usingSystem.Threading;5 6 namespaceThreadTest7 {8 classProgram9 {10 staticvoidMain(string[] args)11 {12 try13 {14 Thread[] ts=newThread[2];15 ABC[] arr=newABC[2];16 ABC info;17 for(inti=0; i

这是执行结果:

05a3fde2f5e996a530d7898b318e6bff.png

如上图可见,线程执行时,其状态值为Background,当线程执行完成后,其状态值为Stopped.

以上是以后台线程为例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值