《并行计算:Parallel Computing》 结构编程 算法应用 §3.3Java并发与并行程序 设计 徐悦牲Yueshen Xu) ysxu@xidian.edu.cn 软件工程系 西安电子科技大学
§3.3 Java并发与并行程序 设计 徐悦甡(Yueshen Xu) ysxu@xidian.edu.cn 软件工程系 西安电子科技大学 《并行计算:Parallel Computing》 结构 编程 算法 应用
本节提纲 历些毛子种拔大 XIDIAN UNIVERSITY ▣ava语言基础讨论 口ava并发程序设计 上节内容 ■Java多线程机制 ■Java中多线程的创建 >Thread方法途径 Java多线程编程 >Runnable接口途径 ■Java多线程程序举例 ■Java并行编程 Java并行编程 >Fork/Join 关键字:Java多线程 多线程创建 多线程举例 Java并行编程
本节提纲 Java语言基础讨论 Java并发程序设计 ◼ Java多线程机制 ◼ Java中多线程的创建 ➢ Thread方法途径 ➢ Runnable接口途径 ◼ Java多线程程序举例 ◼ Java并行编程 ➢ Fork/Join Java多线程编程 2 关键字:Java多线程 多线程创建 多线程举例 Java并行编程 上节内容 Java并行编程
Java多线程机制 历些毛子科枚大多 XIDIAN UNIVERSITY ▣Java中的多线程 ■操作系统按时间片轮流执行每个进程 ■ 在操作系统每次分给Java程序的一个时间片的CPU时间内,在若 干个独立的可控制的线程间切换 ■ 每个Java程序有一个默认的主线程 >VM加载代码,发现main方法后,就会启动一个线程,称为主线程 >与C、C++等语言类似,main方法也是Java程序的入口 ■若在main方法中创建了其他线程 >JVM就在主线程和其他线程间轮流切换,JVM等到所有线程结束后才结 束应用程序 注(复习):JVM,Java Virtual Machine,Java虚拟机 3
Java多线程机制 Java中的多线程 ◼ 操作系统按时间片轮流执行每个进程 ◼ 在操作系统每次分给Java程序的一个时间片的CPU时间内,在若 干个独立的可控制的线程间切换 ◼ 每个Java程序有一个默认的主线程[注] ➢ JVM加载代码,发现main方法后,就会启动一个线程,称为主线程 ➢ 与C、C++等语言类似,main方法也是Java程序的入口 ◼ 若在main方法中创建了其他线程 ➢ JVM就在主线程和其他线程间轮流切换,JVM等到所有线程结束后才结 束应用程序 注(复习):JVM,Java Virtual Machine,Java虚拟机 3
Java多线程机制 历些毛子代枝大等 XIDIAN UNIVERSITY 口Java多线程模型 JVM 代码 数据 /Code /Data 主线程 虚拟 线程1 线程2 线程3 CPU Java中的线程 ■Java内在支持多线程,ava可利用多线程实现并发编程 >Java中的线程可看作由三部分组成:Code,Data,Virtual CPU
Java多线程机制 Java多线程模型 JVM 主线程 线程1 线程2 线程3 ◼ Java内在支持多线程,Java可利用多线程实现并发编程 ➢ Java中的线程可看作由三部分组成:Code,Data, Virtual CPU 虚拟 CPU 代码 /Code 数据 /Data Java中的线程 4
Java多线程机制 历些毛子科枚大》 XIDIAN UNIVERSITY ▣Java中线程的状态 新建 其它阻塞 /O完成 l/O操作join()】 start() join时间到 ·调度 运行结束 强行终止 可运行 时间片到 运行 死亡 yield() 被抢占 休眠时间到 terrupt() sleep() 休眠阻塞 ait() notify() notifyAll( 获得互斥使用权 等待阻塞 访问同步方法 互斥阻塞 5
Java多线程机制 Java中线程的状态 新建 可运行 start( ) 死亡 运行结束 /强行终止 休眠阻塞 sleep( ) ` 休眠时间到 interrupt( ) 等待阻塞 wait( ) notify( ) notifyAll( ) 互斥阻塞 访问同步方法 ` 获得互斥使用权 其它阻塞 I/O完成 I/O操作 join( ) join时间到 运行 调度 时间片到 yield( ) 被抢占 5