共 1,394 篇文章
共 6,621 篇文章及评论
- Association for Computing Machinery TechNews (ACM)
- Go Parallel! (Dr. Dobbs)
- HPCwire (Tabor Communications, Inc.)
- insideHPC (John West)
- Joe Duffy's Weblog (Microsoft)
- Microsoft Parallel Programming Development Center (Microsoft Germany)
- MultiCoreInfo.com
- scalability.org (Scalable Informatics)
- Software Dev Blog (Intel Germany)
- Soft Talk Blog (Intel United Kingdom)
- The Moth (Microsoft)
Archives
帖子来自 easewalk 
多线程基础
作者: easewalk (1 篇文章) 日期: 六月 24, 2011 在 5:00 下午
评论 (0)
现在的我们打开电脑,可以同时运行多个程序,比如、在听音乐的同时,还在聊天,当然还有玩游戏等等。 大家打开任务管理器工具后,就能点到进程选项卡,就会发现:我们没有运行多少个程序,但是,在列表里面,一般都多达几十个进程。每一个进行都对应一个应用程序。然后,再点到性能选项卡,看到左下角的总数分组框中,会发现:线程数远远多于进程数。 这是为什么呢?就是因为,我们的程序,如果是多进程,同样能够同时运行很多程序,但是,进程是直接 独占 硬件资源的,所以,进程数越多,电脑的剩余资源就越少,电脑就越慢。但是我们同一个程序,能同时做很多事情,比如,QQ聊天软件,在和这人聊天的同时,另一个好友发信息来了,是不是都能同时收到?难道,每一个窗口,都要去开一个独立的进程?那样的话,如果,聊天的窗口一多。电脑都只能聊 QQ 了 ... 但是我们发现,即使QQ的聊天窗口很多,但是卡的话,只会QQ卡,其他程序不会卡。这是为什么呢?这里就引入了我们的线程! 为什么需要线程呢?有些任务必须由线程来执行,像播放器在播放的时候,调用一个线程去播放,肯定还要能够在播放的时候,可以暂停或停止,那么这些按钮功能也要有线程来和播放同步执行。一些任务可以在后台运行一些任务本身是多线程的,像播放视频的时候,肯定还要有声音吧?那一个线程播放画面,另一个线程播放声音。一些任务可以被细分,从而接受并行处理。 那么什么是线程呢?我们可以把一个线程看成一个独立的虚拟的小电脑。这个虚拟的小电脑由我们来创建,并让它按照我们的控制流去执行。而所有的线程都是在进程内部的,所以,线程分享的是进程分得硬件的资源。也就是说,线程再多(这里用到了再多,就是表明了,线程可以创建多个的),也不会影响除包含该线程的进程以外的程序。 那么线程既然这么好,是不是很难呢?我们来看看线程的两种方式: 方式一:继承Thread类 //继承Thread类 public class MyThread extends ...
