请各位大哥大姐们给我说说,进程与线程的区别吧。我都遇到两次啦。每次面试都有这个问题!急求。

解决方案 »

  1.   

    线程是指进程内的一个执行单元,也是进程内的可调度实体.
    与进程的区别:
    (1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
    (2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
    (3)线程是处理器调度的基本单位,但进程不是.
    4)二者均可并发执行. 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 
    线程的划分尺度小于进程,使得多线程程序的并发性高。 
    另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 
    线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 
    从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 
    线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 
    一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
      

  2.   

    任何应用程序在执行期间都被称为一个进程。进程将引用由正在执行的应用程序所使用的虚拟内存空间、系统资源和数据。处理器根据接收命令的顺序依次运行由进程发出的命令。线程是一个执行单元。每个进程至少要包含一个线程。如果一个进程包含多个线程,则操作系统会根据线程的优先级为每个独立的线程分别分配处理器时间。对于分配给进程的资源,该进程下的每个线程都拥有访问权,只是优先级高的线程能够更频繁地获得处理器的访问权而已。在多线程进程中,应用程序既可以创建独立的线程来运行耗时任务,同时又可以通过主线程或其他独立的线程来继续发出其他命令。如果执行的线程过多,则操作系统花在切换线程上的时间会比执行某个给定线程的时间还要多,这将导致性能下降。因此,应该根据实际情况来斟酌要使用的线程数,而且要相应地测试代码以验证其性能。关于更多的详细情况可以参考我的blog,我写了两篇关于.NET基础知识的问题,可能对你有用,
    http://blog.csdn.net/zhzuo/archive/2009/07/15/4351927.aspx
    http://blog.csdn.net/zhzuo/archive/2009/07/15/4351910.aspx
      

  3.   

    我说说自己的理解,若有不对的请指出来。
    由于cpu本质上要一行一行执行代码,所以进程和线程都是处在大的循环中。
    通过抽象后,进程要做更多的事,比如:发起事件,内存管理,保存环境参数等
    而线程就是进程中的一段代码,(原始的线程就是一个switch case代码)
    所以线程里要经常使用Thread.sleep的语句,以便其他线程能运行。
      

  4.   

    进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.一个儿子可以成为别人的儿子,一个老子也可以为别的老子生儿子.
    From Internet.