5天不再惧怕多线程 --第一天 尝试Thread.docxVIP

5天不再惧怕多线程 --第一天 尝试Thread.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
? HYPERLINK /huangxincheng/archive/2012/03/14/2395279.html 5天不再惧怕多线程——第一天 尝试Thread 转至:/huangxincheng/archive/2012/03/14/2395279.html ? ? ?原本准备在mongodb之后写一个系列,不过这几天用到多线程时才发现自己对多线程的了解少之又少,仅仅停留在lock上面, 故这几天看了下线程参考手册结合自己的心得整理一下放在博客上作为自己的学习笔记。 ? ? ?好了,我们知道“负载”是一个很时尚,很牛X的玩意,往大处说,网站需要负载,数据库需要负载。往小处说,线程也需要负载,面对海量的 用户请求,我们的单线程肯定扛不住,那么怎么办,一定要负载,所以说多线程是我们码农必须要熟练掌握的一门技术。 ? ? 在framework中给我们提供了一个Threading命名空间,下面是一个msdn上不完整的截图: 在后面的系列中我也是主要整理这几个类的使用方法和应用场景。 一:Thread的使用 ? ? ? 我们知道这个类代表处理器线程,在Thread中有几个比较常用和重要的方法。 1 sleep: ?这个算是最简单的了。 2 join: ? ?这个可以让并发行处理变成串行化,什么意思呢?上代码说话最清楚。 1 class Test 2 { 3 static void Main() 4 { 5 Thread t = new Thread(Run); 6 7 t.Start(); 8 9 //Join相当于把Run方法内嵌如此 10 t.Join(); 11 12 //该死的t.Join(),害的我主线程必须在你执行完后才能执行。 13 Console.WriteLine(我是主线程: + Thread.CurrentThread.GetHashCode()); 14 } 15 16 static void Run() 17 { 18 //等待5s 19 Thread.Sleep(5000); 20 21 Console.WriteLine(我是线程: + Thread.CurrentThread.GetHashCode()); 22 } 23 } 3?Interrupt和Abort:这两个关键字都是用来强制终止线程,不过两者还是有区别的。 ? ? ? ? ① Interrupt: ?抛出的是?ThreadInterruptedException 异常。 ? ? ? ? ? ? ? ? ?Abort: ?抛出的是 ?ThreadAbortException 异常。 ? ? ? ? ②?Interrupt:如果终止工作线程,只能管到一次,工作线程的下一次sleep就管不到了,相当于一个 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?contine操作。 ? ? ? ? ? ? ? ? ?Abort:这个就是相当于一个break操作,工作线程彻底死掉。? ? Interrupt: 1 namespace Test 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 Thread t = new Thread(new ThreadStart(Run)); 8 9 t.Start(); 10 11 //阻止动作 12 t.Interrupt(); 13 14 Console.Read(); 15 } 16 17 static void Run() 18 { 19 for (int i = 1; i = 3; i++) 20 { 21 Stopwatch watch = new Stopwatch(); 22 23 try 24 { 25 watch.Start(); 26 Thread.Sleep(2000); 27 wa

文档评论(0)

wx171113 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档