101]ava中的线程 从逻辑的观点来看,多线程意味着一个程序的多行语句同 时执行,但是多线程并不等于多次启动一个程序,操作系统 也不会把每个线程当作独立的进程来对待: 两者的粒度不同,是两个不同层次上的概念。进程是由 操作系统来管理的,而线程则是在一个程序(进程)内。 不同进程的代码、内部数据和状态都是完全独立的,而 个程序内的多线程是共享同一块内存空间和同一组系统 资源,有可能互相影响 线程本身的数据通常只有寄存器数据,以及一个程序执 行时使用的堆栈,所以线程的切换比进程切换的负担要小
从逻辑的观点来看,多线程意味着一个程序的多行语句同 时执行,但是多线程并不等于多次启动一个程序,操作系统 也不会把每个线程当作独立的进程来对待: 两者的粒度不同,是两个不同层次上的概念。进程是由 操作系统来管理的,而线程则是在一个程序(进程)内。 不同进程的代码、内部数据和状态都是完全独立的,而 一个程序内的多线程是共享同一块内存空间和同一组系统 资源,有可能互相影响。 线程本身的数据通常只有寄存器数据,以及一个程序执 行时使用的堆栈,所以线程的切换比进程切换的负担要小。 10.1 Java中的线程
101]ava中的线程 ■进程:程序的一次执行 ■程序代码 程序数据 程序资源 线程:进程中程序代码的一个执行序列。 程序调用堆栈 ■线程局部变量 ■可共享访问进程中的数据和资源 操作系统按线程来调度程序的执行
◼ 进程:程序的一次执行。 ◼ 程序代码 ◼ 程序数据 ◼ 程序资源 ◼ 线程:进程中程序代码的一个执行序列。 ◼ 程序调用堆栈 ◼ 线程局部变量 ◼ 可共享访问进程中的数据和资源 ◼ 操作系统按线程来调度程序的执行 10.1 Java中的线程
101]ava中的线程 文件各种系统资源输入输出装置 文件各种系统资源输入输出装置 数据区段三 数据区段 程序区段 程序区段 只有一个地方在执行 同时有数个地方在执行 传统的进程 多线程的任务
文件 各种系统资源 输入输出装置 数据区段 程序区段 只有一个地方在执行 文件 各种系统资源 输入输出装置 数据区段 程序区段 同时有数个地方在执行 传统的进程 多线程的任务 10.1 Java中的线程
101]ava中的线程 多线程的优势: 多线程编程简单,效率高(能直接共享数据和资源,多进程不能) ■适合于开发服务程序(如Web服务,聊天服务等) ■适合于开发有多种交互接口的程序(如聊天程序的客户端,网络下 载工具) 适合于有人机交互又有计算量的程序(如字处理程序Word, Excel) 减轻编写交互频繁、涉及面多的程序的困难(如监听网络端口) 程序的吞吐量会得到改善(同时监听多种设备,如网络端口、串口、并口 以及其他外设) 有多个处理器的系统,可以并发运行不同的线程(否则,任何时刻只有 一个线程在运行)
多线程的优势: ◼ 多线程编程简单,效率高(能直接共享数据和资源,多进程不能) ◼ 适合于开发服务程序(如Web服务,聊天服务等) ◼ 适合于开发有多种交互接口的程序(如聊天程序的客户端,网络下 载工具) ◼ 适合于有人机交互又有计算量的程序(如字处理程序Word,Excel) 减轻编写交互频繁、涉及面多的程序的困难(如监听网络端口) 程序的吞吐量会得到改善(同时监听多种设备,如网络端口、串口、并口 以及其他外设) 有多个处理器的系统,可以并发运行不同的线程(否则,任何时刻只有 一个线程在运行) 10.1 Java中的线程
101]ava中的线程 虽然各种操作系统(Unix/ Linux、 Windows系列等)都 支持多线程,但若要用C、C++或其他语言编写多线程程序 是十分困难的,因为它们对数据同步的支持不充分。 对多线程的综合支持是Java语言的一个重要特色,它提 供了 Thread类来实现多线程。在Java中,线程可以认为是由 三部分组成的: 虚拟CPU,封裝在 java. langThread类中,它控制着整 个线程的运行; 执行的代码,传递给 Thread类,由 Thread类控制顺序 执行; 处理的数据,传递给 Thread类,是在代码执行过程中 所要处理的数据
虽然各种操作系统(Unix/Linux、Windows系列等)都 支持多线程,但若要用C、C++或其他语言编写多线程程序 是十分困难的,因为它们对数据同步的支持不充分。 对多线程的综合支持是Java语言的一个重要特色,它提 供了Thread类来实现多线程。在Java中,线程可以认为是由 三部分组成的: ▪ 虚拟CPU,封装在java.lang.Thread类中,它控制着整 个线程的运行; ▪ 执行的代码,传递给Thread类,由Thread类控制顺序 执行; ▪ 处理的数据,传递给Thread类,是在代码执行过程中 所要处理的数据。 10.1 Java中的线程