H 第10章Java的线程处 通常,我们把操作系统的多个任务称为进程 ( Process,而程序中的多任务则称为线程。那么,线程 和进程之间有什么区别呢?最基本的区别就是每个进 程都拥有一组完整的属于自己的变量,而线程则共享 这些数据。看起来这样似乎不如进程安全,确实如此, 本章后面将会更详细地讨论。但线程的优势在于创建 和注销线程的开销比运行新的进程少得多,所以现在 主流的操作系统都支持多线程。而且,和进程间的通 信相比,线程间的通信要快得多,也方便得多
第10章 Java的线程处理 通常,我们把操作系统的多个任务称为进程 (Process),而程序中的多任务则称为线程。那么,线程 和进程之间有什么区别呢?最基本的区别就是每个进 程都拥有一组完整的属于自己的变量,而线程则共享 这些数据。看起来这样似乎不如进程安全,确实如此, 本章后面将会更详细地讨论。但线程的优势在于创建 和注销线程的开销比运行新的进程少得多,所以现在 主流的操作系统都支持多线程。而且,和进程间的通 信相比,线程间的通信要快得多,也方便得多
A第10章Java的线程处理 10.1.1线程 不少程序语言都提供对线程的支持,同这些语言 相比,Java的特点是从最底层开始就对线程提供支持。 除此以外,标准的Java类是可重载的,它允许在一个 给定的应用程序中由多个线程调用同一方法,而线程 彼此之间又互不干扰。Java的这些特点为多线程应用 程序的设计奠定了基础 究竟什么是线程呢?正如图102中所示,一个线程 是给定的指令的序列(你所编写的代码)、一个栈(在给 定的方法中定义的变量),以及一些共享数据(类一级的 变量)。线程也可以从全局类中访问静态数据
第10章 Java的线程处理 10.1.1 线程 不少程序语言都提供对线程的支持,同这些语言 相比,Java的特点是从最底层开始就对线程提供支持。 除此以外,标准的Java类是可重载的,它允许在一个 给定的应用程序中由多个线程调用同一方法,而线程 彼此之间又互不干扰。Java的这些特点为多线程应用 程序的设计奠定了基础。 究竟什么是线程呢?正如图10.2中所示,一个线程 是给定的指令的序列 (你所编写的代码)、一个栈(在给 定的方法中定义的变量),以及一些共享数据(类一级的 变量)。线程也可以从全局类中访问静态数据
H 第10章Java的线程处 Java virtual machine Applet or Application Thread a Prog. c ntr Local stack Thread B Global Prog. c nir Local stack Thread N Prog. Cnt Local stack 图102
第10章 Java的线程处理 图 10.2 Java Virtual Machine Applet or Application Global Data Thread A Prog. Cntr. Local Stack Thread B Prog. Cntr. Local Stack Thread N Prog. Cntr. Local Stack …
H 第10章Java的线程处 每个线程都有其自己的堆栈和程序计数器(PC)。用 户可以把程序计数器(PC)设想为用于跟踪线程正在执 行的指令,而堆栈用于跟踪线程的上下文(上下文是当 线程执行到某处时,当前的局部变量的值)。虽然用户 可以编写出在线程之间传送数据的子程序,但在正常 凊况下,一个线程不能访问另外一个线程的栈变量
第10章 Java的线程处理 每个线程都有其自己的堆栈和程序计数器(PC)。用 户可以把程序计数器(PC)设想为用于跟踪线程正在执 行的指令,而堆栈用于跟踪线程的上下文(上下文是当 线程执行到某处时,当前的局部变量的值)。虽然用户 可以编写出在线程之间传送数据的子程序,但在正常 情况下,一个线程不能访问另外一个线程的栈变量
H 第10章Java的线程处 个线程或执行上下文由三个主要部分组成: ①一个虚拟处理机 ②CPU执行的代码 ③代码操作的数据 代码可以或不可以由多个线程共享,这和数据是 独立的。两个线程如果执行同一个类的实例代码,则 它们可以共享相同的代码
第10章 Java的线程处理 一个线程或执行上下文由三个主要部分组成: ① 一个虚拟处理机 ② CPU执行的代码 ③ 代码操作的数据 代码可以或不可以由多个线程共享,这和数据是 独立的。两个线程如果执行同一个类的实例代码,则 它们可以共享相同的代码