A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zclove898 高级黑马   /  2011-12-14 00:00  /  2020 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zclove898 于 2011-12-14 00:38 编辑

    一直搞不懂线程和进程,看了一些书上的解释,越看越迷糊,希望帮忙解释一下,通俗易懂点,谢谢

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

8 个回复

正序浏览
颜小飞 黑马帝 2011-12-14 19:20:05
9#
  进程:进程是程序在CPU上的一次执行过程 ,是活跃在内存中的,这经动态的,当运行一个程序时,就是启动了一个进程。操作系统通过分配内存、CPU时间片等资源为正在运行的程序提供运行环境,并可以实现多个进程的并发运行。
线程:是进程中某个单一顺序的控制流,是进程的一部分。
线程与进程的区别:线程的划分尺度小于进程,使得多线程程序的并发性高。进程在执行过程中拥有独立的内存单元,而多个线程则是共享内存,从而极大地提高运行效率。进程是一个独立的执行单元,而线程不能独立执行,必须依赖进程,由进程提供多个线程的执行控制。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
付旭 黑马帝 2011-12-14 13:55:59
8#
运行中的程序 就是进程   而进程里包含线程
回复 使用道具 举报
这么说吧,兄弟开过车不? 一部行驶中的车子就是一个进程,而在车子行驶过程中你要控制方向,要踩刹车,要加油门这些动作就相当于线程,共同来支持整部车子的行驶。
回复 使用道具 举报
zclove898 发表于 2011-12-14 00:27
恩,例子很形象,谢谢了

学习多交流心得,成张的快...:lol
回复 使用道具 举报
黑马胡林 发表于 2011-12-14 00:25
这么晚了,来看看,我就我自己的话来总结吧:
程序是由进程组成的,进程是由线程组成的。
而程序里面有好 ...

恩,例子很形象,谢谢了
回复 使用道具 举报
吴上储 发表于 2011-12-14 00:10
进程:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一 ...

谢谢了,写的很全面,很受用
回复 使用道具 举报
本帖最后由 黑马胡林 于 2011-12-14 00:32 编辑

这么晚了,来看看,我就用我自己的话来总结吧:
程序是由进程组成的,进程是由线程组成的。
而程序里面有好多功能,这些功能就是由线程组成的
比如说:你用快播这个软件,这个软件由进程控制,你想一边看这个电影,一边在下别的电影,这样就方便你一边看,还不耽误你下载。所以这里面就有俩个功能运行,这就是由线程所执行,就是一个线程支持在线播放,一个线程支持你下载。
所以说:
      线程是进程的实体
      线程支持了程序的并发执行
      线程是进程的的基本单位,简单的说,就是一个方法,一个功能
但线程占用CPU和内存资源,最典型的软件就是迅雷,可以同时间支持50个下载程序,那可是相当占CPU和内存啊,也就是如这个工具至少有50个线程在并发执行!
所线线程的好处:
   1. 线程能独立运行,支持程序的并发执行,提高了进程的处理效率及工作能力
   2. 线程好创建
   3. 同一进程中线程与线程之间好转换与调用
   4. 同一进程线程共享内存和文件,不必在调用内核
至于线程的状态,这里有创建,就绪,运行,阻塞,死亡,他们之间的关系,这得你熟悉编程后自己写点代码才能更有心得,其中最重要处理关系就是,同步互斥了...
            


      

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
进程:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。

线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。

多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。

多线程的优劣

优点:可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。

缺点:线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;

多线程需要协调和管理,所以需要CPU时间跟踪线程;

线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;

线程太多会导致控制太复杂,最终可能造成很多Bug

控制线程的类和方法

类:using System.Threading; Thread类

Thread类的方法:Start():启动线程;

Sleep(int):静态方法,暂停当前线程指定的毫秒数;

Abort():通常使用该方法来终止一个线程;

Suspend():该方法并不终止未完成的线程,它仅仅挂起线程,以后还可恢复;

Resume():恢复被Suspend()方法挂起的线程的执行。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马