更新时间:2024-07-25 15:33:02
封面
版权信息
内容简介
前言
基础篇
Chapter 1 第1章 Linux线程基础
1.1 Linux进程
1.1.1 深入理解进程
1.1.2 进程描述符
1.1.3 进程创建
1.1.4 上下文切换
1.2 Linux进程间通信
1.2.1 信号
1.2.2 管道
1.2.3 共享内存
1.2.4 FIFO队列
1.2.5 消息队列
1.2.6 Socket
1.3 CPU任务调度
1.3.1 实时进程与普通进程
1.3.2 实时调度策略
1.3.3 普通调度策略
1.3.4 CFS调度算法
1.3.5 整体任务调度
1.4 Linux线程
1.4.1 Pthread简介
1.4.2 线程创建
1.4.3 线程终止
1.5 线程同步:互斥量
1.5.1 创建互斥量
1.5.2 互斥量解锁
1.5.3 mutex示例
1.6 线程同步:条件变量
1.6.1 创建条件变量
1.6.2 条件变量等待
1.6.3 条件变量通知
1.6.4 条件变量使用示例
1.7 线程同步:信号量
1.7.1 初始化未命名信号量
1.7.2 等待一个信号量
1.7.3 发布一个信号量
1.8 小结
Chapter 2 第2章 JVM基础知识
2.1 Java、JDK、JRE与JVM
2.2 Java跨平台原理
2.3 JVM系统架构
2.3.1 类加载子系统
2.3.2 运行时数据区
2.3.3 执行引擎
2.4 JVM与操作系统的线程模型
2.4.1 操作系统的线程模型
2.4.2 JVM的线程模型
2.5 JNI机制
2.5.1 JNI开发流程
2.5.2 JNI数据类型转换
2.5.3 实现案例
2.6 小结
Chapter 3 第3章 JVM线程
3.1 为什么需要多线程
3.1.1 CPU访问各组件周期
3.1.2 多线程的出现
3.2 多线程带来的问题
3.2.1 CPU缓存导致的可见性问题
3.2.2 线程上下文切换带来的原子性问题
3.2.3 优化带来的乱序问题
3.3 Java内存模型与线程规范
3.3.1 变量共享
3.3.2 变量共享的内存可见性
3.3.3 Happens-Before规则
3.4 内存一致性协议
3.4.1 CPU缓存读取策略
3.4.2 CPU缓存写入策略
3.4.3 MESI协议
3.5 内存屏障
3.5.1 内存读写屏障
3.5.2 内存屏障的实现
3.5.3 JVM内存屏障指令实现
3.6 JVM的线程
3.7 Java线程创建过程
3.7.1 线程创建
3.7.2 线程执行
3.8 Java线程生命周期
3.8.1 Java线程生命周期模型
3.8.2 查看线程的状态
3.9 小结
Chapter 4 第4章 JVM线程通信原理
4.1 ParkEvent原理
4.1.1 Allocate方法
4.1.2 Rlease方法
4.1.3 park方法
4.1.4 unpark方法
4.2 Parker实现原理
4.2.1 park方法
4.2.2 unpark方法
4.3 sleep方法实现原理
4.3.1 JVM_Sleep函数
4.3.2 sleep函数
4.4 ObjectMonitor实现原理
4.4.1 数据结构
4.4.2 ObjectMonitor的构造函数