当前位置:   article > 正文

理解进程和线程_j进程,线程,任务理解

j进程,线程,任务理解
我理解为
假如进程是一段代码(由a、b、c组成)
线程是一段控制流,cpu真正允许的是线程,而且每个时间段只能允许一个
一个进程有多个线程
当线程A执行了a代码后,CPU启动线程B开始执行a代码。然后继续随机执行。。。。
这就是多线程,但是多线程究竟比单线程好在哪里呢?我还没有理解。。。




线程是 程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为 多线程.
要弄清楚线程,须结合进程加以理解:
进程是一个可执行的 程序,由私有虚拟地址空间、 代码、数据和其他操作
系统资源(如进程创建的文件、管道、同步 对象等)组成。一个 应用程序
可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主
线程。
线程是 操作系统分时调度分配CPU时间的 基本实体。一个 线程可以执行 程序
的任意部分的 代码,即使这部分代码被另一个线程并发地执行;一个进程的
所有线程共享它的虚拟地址空间、 全局变量和操作 系统资源
之所以有 线程这个概念,是因为以线程而不是进程为调度 对象效率更高:
由于创建新进程必须加载 代码,而线程要执行的代码已经被映射到进程的
地址空间,所以创建、执行线程的速度比进程更快。
一个进程的所有线程共享进程的 地址空间全局变量,所以简化了线程之间
的通讯。

编辑本段详细介绍

线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个 父进程线程不拥有 系统资源,只有运行必须的一些 数据结构;它与 父进程的其它线程共享该进程所拥有的全部资源。 线程可以创建和撤消线程,从而实现 程序的并发执行。一般, 线程具有就绪、阻塞和运行三种基本状态。在多中央 处理器的系统里,不同 线程可以同时在不同的中央处理器上运行,甚至当它们属于同一个进程时也是如此。大多数支持多 处理器操作系统都提供 编程接口来让进程可以控制自己的 线程与各处理器之间的关联度(affinity)。
有时候,线程也称作 轻量级进程。就象进程一样,线程在 程序中是独立的、并发的执行路径,每个线程有它自己的 堆栈、自己的 程序计数器和自己的 局部变量。但是,与分隔的进程相比,进程中的线程之间的隔离程度要小。它们共享 内存文件句柄和其它每个进程应有的状态。
进程可以支持多个 线程,它们看似同时执行,但互相之间并不同步。一个进程中的多个线程共享相同的内存地址空间,这就意味着它们可以访问相同的 变量对象,而且它们从同一堆中分配对象。尽管这让线程之间共享信息变得更容易,但您必须小心,确保它们不会妨碍同一进程里的其它线程。
Java 线程工具和 API 看似简单。但是,编写有效使用 线程的复杂 程序并不十分容易。因为有多个线程共存在相同的 内存空间中并共享相同的 变量,所以您必须小心,确保您的线程不会互相干扰。

编辑本段线程的概念

一般来说,我们把正在计算机中执行的程序叫做"进程"(Process),而不将其称为程序(Program)。所谓"线程"(Thread),是"进程"中某个单一顺序的 控制流。新兴的 操作系统,如Mac,Windows NT,Windows 95等,大多采用 多线程的概念,把线程视为基本执行单位。线程也是Java中的相当重要的组成部分之一。
甚至最简单的Applet也是由多个线程来完成的。在Java中,任何一个Applet的paint()和update()方法都是由AWT(Abstract Window Toolkit)绘图与事件处理线程调用的,而Applet 主要的里程碑方法——init(),start(),stop()和destory() ——是由执行该Applet的应用调用的。
单线程的概念没有什么新的地方,真正有趣的是在一个 程序中同时使用多个线程来完成不同的任务。某些地方用轻量进程(Lightweig ht Process)来代替线程,线程与真正进程的相似性在于它们都是单一顺序控制流。然而线程被认为轻量是由于它运行于整个 程序的上下文内,能使用整个程序共有的资源和程序环境。
作为单一顺序 控制流,在运行的 程序内线程必须拥有一些资源作为必要的开销。例如,必须有执行 堆栈程序计数器。在 线程内执行的 代码只在它的上下文中起作用,因此某些地方用"执行上下文"来代替"线程"。
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/151400
推荐阅读
相关标签
  

闽ICP备14008679号