黑马程序员技术交流社区

标题: 该如何理解线程 [打印本页]

作者: kakaxi117    时间: 2014-2-17 21:55
标题: 该如何理解线程
今天听毕老师讲线程时说线程相当于进程的独立运行单元,该如何理解?

作者: 唐宋元明清    时间: 2014-2-17 22:01
给你作个比喻吧。一个公司雇佣员工去完成工作。公司相当于进程,员工相当于线程。只有有了公司,员工才会派出去完成任务,公司一倒闭,员工就下岗。相反,员工下岗,公司不一定会倒闭。也就是 进程结束,线程就结束;线程结束,进程不一定结束。
作者: why168    时间: 2014-2-17 23:25
      进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易理解。
      计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。而电力充沛,工厂的大部分车间都可以同时开工。
    【这只是假设,当然现在的计算机都是多任务的,也就是多进程!】如图:
      进程就好比工厂的车间,它代表CPU所能处理的单个任务。
      一个车间里,可以有很多工人。他们协同完成一个任务。线程就好比车间里的工人。一个进程可以包括多个线程。

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


作者: kakaxi117    时间: 2014-2-18 19:28
哦;谢谢如此详细的解释。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2