第6章面的线程 Touuspspuaip
第6章 Java的线程
主要内容 6.1线程的概念与 POSIX标准 ·6.1.1线程的概念 6.1.2线程的 POSIX标准 6.2多线程的]ava实现 6.2.1线程的创建方法 6.2.2线程的状态 ■6.3互斥线程间的同步机制 6.3.1多线程带来的冲突问题 6.3.2共享资源合理使用的实现 6.3.3按同步协调程度划分的线程间的关系 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 2 主要内容 ◼ 6.1 线程的概念与POSIX标准 • 6.1.1 线程的概念 • 6.1.2 线程的POSIX标准 ◼ 6.2 多线程的Java实现 • 6.2.1 线程的创建方法 • 6.2.2 线程的状态 ◼ 6.3 互斥线程间的同步机制 • 6.3.1 多线程带来的冲突问题 • 6.3.2 共享资源合理使用的实现 • 6.3.3 按同步协调程度划分的线程间的关系
6.1线程的概念与POSX标准
6.1 线程的概念与POSIX标准
线程的概念 线程其实是控制线程( Thread of control)的简写。 控制线程就是程序运行时的路径,是在 个程序中与其它控制线程无关的能够独立 运行的代码片段。 与线程有关的几个名词: 进程与线程 并发性与并行性 异步与同步 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 4 线程的概念 ◼ 线程其实是控制线程(Thread of control)的简写。 ◼ 控制线程就是程序运行时的路径,是在一 个程序中与其它控制线程无关的能够独立 运行的代码片段。 ◼ 与线程有关的几个名词: • 进程与线程 • 并发性与并行性 • 异步与同步
基于进程的多任务处理环境 进鞋P!十局部内存 操作系统 进程P2 局部内存 共享内存 进程P3-局部内存 进程是重量级的内核级实体,需要分配它们自己独立的地 址空间:包括有虚拟内存映射、文件描述符、用户ID等, 并且每个进程都有属于自己的这些集合。用户的程序要访 可进程结构中的数据、查询或改变状态,唯一方法是通过 系统调用。进程间通信和转换是昂贵和受限的 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 5 基于进程的多任务处理环境 ◼ 进程是重量级的内核级实体,需要分配它们自己独立的地 址空间:包括有虚拟内存映射、文件描述符、用户ID等, 并且每个进程都有属于自己的这些集合。用户的程序要访 问进程结构中的数据、查询或改变状态,唯一方法是通过 系统调用。进程间通信和转换是昂贵和受限的
基于线程的多任务处理环境 进程P1 操作系统 进程P2 1进程P3: 线程T1 局部变量 1|Java虚拟机 仁线程12}-局部变量 C全局内存 线程T3 局部变量 线程是轻量级实体,由寄存器、堆栈和某些数据组成。进程 结构的其余部分由所有的线程所共享:如地址空间、文件描 述符等 它们共享相同的地址空间并且共同分享同一个进 程。线程间通信是便宜的,线程间的转换也是低成本的 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 6 基于线程的多任务处理环境 ◼ 线程是轻量级实体,由寄存器、堆栈和某些数据组成。进程 结构的其余部分由所有的线程所共享:如地址空间、文件描 述符等——它们共享相同的地址空间并且共同分享同一个进 程。线程间通信是便宜的,线程间的转换也是低成本的
线程并发 T1 T2 CPU T3 并发性( Concurrency)是两个或多个线程(或传统的进 程)可以同时在执行代码之中;可以是相同的代码,也可 以是不同的代码。这些线程可以一次执行,也可以多次执 ,即一个已开始执行但被中断,而另外一个已开始了 但在给定的时间点上,只有一个在CPU在处理一个线程。 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 7 线程并发 ◼ 并发性(Concurrency)是两个或多个线程(或传统的进 程)可以同时在执行代码之中;可以是相同的代码,也可 以是不同的代码。这些线程可以一次执行,也可以多次执 行,即一个已开始执行但被中断,而另外一个已开始了。 ◼ 但在给定的时间点上,只有一个在CPU在处理一个线程
线程并行 } CPU CPU T3 并行性( Parallelism)是针对多处理器环境而言的, 是指两个或多个线程真正同时运行在不同的CPU上。 在多处理器机上,很多不同的线程可以并行运行,或者 说是同时运行 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 8 线程并行 ◼ 并行性(Parallelism)是针对多处理器环境而言的, 是指两个或多个线程真正同时运行在不同的CPU上。 ◼ 在多处理器机上,很多不同的线程可以并行运行,或者 说是同时运行
异步与同步 异步世界需要处理同步业务 有3个人在3个收银台前结帐 3个人结帐是异步的 每个人信用卡在银行业务处理时需保证同步 2021/2/20 ava面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 9 异步与同步 ◼ 异步世界需要处理同步业务 ◼ 有3个人在3个收银台前结帐 • 3个人结帐是异步的 • 每个人信用卡在银行业务处理时需保证同步
线程的POSⅨ标准 传统 进程 Proc 1 Proc 2 Proc 3 Proc 4 Proc 5 用户 LWP 内核 线程 内核 硬件 处理器 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 10 线程的POSIX标准