黑马程序员多线程原来是这么简单

黑马程序员多线程原来是这么简单

ID:31563337

大小:79.00 KB

页数:3页

时间:2019-01-13

黑马程序员多线程原来是这么简单_第1页
黑马程序员多线程原来是这么简单_第2页
黑马程序员多线程原来是这么简单_第3页
资源描述:

《黑马程序员多线程原来是这么简单》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、黑马程序员——多线程原来是这么简单作者: william_feng (1篇文章)日期:十二月16,2011在11:59上午一直以来对于多线程有种恐惧恐惧感,不理解它到底是什么回事,感觉挺抽象的,自从听了传智播客的邹老师对于多线程的讲解,我可以很自信地说我多线程方面入门了,特别是邹老师对于多线程有一套独有的方法,那就是画图,通过画图可以很直观地告诉你多线程是什么回事,比如UI线程和主线程,前台线程和后台线程,通过案例的讲解让你发现多线程的美妙。以下简单从如何创建多线程开始。首先来看用单线程的缺点:通过对比单线程和多线程,创建了一个winform小程序来对比,界面如下:进入代码区

2、:首先建立一个循环999999999次的方法:viewplaincopytoclipboardprint?01.///02.///循环计数的方法03.///04.voidCountTime()05.{06.DateTimebeginTime=DateTime.Now;07.for(inti=0;i<=999999999;i++)08.{09.10.}11.TimeSpants=DateTime.Now.Subtract(beginTime);12.MessageBox.Show("执行完毕!!"+ts.TotalMilliseconds);13.}//////循环计数的方法/

3、//voidCountTime(){DateTimebeginTime=DateTime.Now;for(inti=0;i<=999999999;i++){}TimeSpants=DateTime.Now.Subtract(beginTime);MessageBox.Show("执行完毕!!"+ts.TotalMilliseconds);}回到界面单击“单线程的缺点”这个按钮,编写事件代码如下:viewplaincopytoclipboardprint?01.//单线程的缺点02.privatevoidbtnSingleThread_Click(objectsender,Ev

4、entArgse)03.{04.CountTime();05.}//单线程的缺点privatevoidbtnSingleThread_Click(objectsender,EventArgse){CountTime();}点击运行,由于不能演示看,你会看到你无法拖动这个窗口移动摇晃,好像界面卡死了一样,过了一会儿,因为循环计数结束,弹出如下窗口:2)那么如何解决这种UI卡死的问题呢,因为之前单单用到单线程的而出现卡死的问题是因为界面运行的时候,其实主线程只能去处理计数,而根本没有时间去处理你偶外的“拖动摇晃”这个事件,之道计数这个事情做完之后才会过来做“拖动摇晃”的这个事件,

5、为了解决这个“假死”的事情,就要用到多线程技术,点击界面的“多线程”按钮,如下代码:viewplaincopytoclipboardprint?01.//使用多线程来解决UI卡死问题02.privatevoidbtnMulTread_Click(objectsender,EventArgse)03.{04.//ThreadStartts=newThreadStart(CountTime);05.//Threadth=newThread(ts);06.//创建线程对象传入要线程执行的方法07.Threadth=newThread(CountTime);08.//将线程设置为后台

6、线程(当所有的前台线程结束后,后台线程会自动退出)09.th.IsBackground=true;10.//启动线程执行方法11.th.Start();12.13.14.}//使用多线程来解决UI卡死问题privatevoidbtnMulTread_Click(objectsender,EventArgse){//ThreadStartts=newThreadStart(CountTime);//Threadth=newThread(ts);//创建线程对象传入要线程执行的方法Threadth=newThread(CountTime);//将线程设置为后台线程(当所有的前台线

7、程结束后,后台线程会自动退出)th.IsBackground=true;//启动线程执行方法th.Start();}这样点击运行并点击“多线程”按钮来执行的话,你会发现运行过程中你可以拖动窗口,非常流畅地拖动着走,直到运行结束弹出如下消息窗口:细心的你可能会发现上面两个执行时间不一样,单线程用的时间比多线程用的少那么一点点,原因是因为CPU要来回转过去执行UI线程和计数线程,其实多线程的实际上不是同时执行,只是因为CPU处理速度太快了,可以非常快速地来回在各个线程之间切换执行,就好像我们先烧开水,然后不

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。