作品简介

本书共分为四个部分:第一部分详细地介绍了Java多线程的基本用法和各个API的使用,并且着重介绍了线程与Java虚拟机内存之间的关系。第二部分由线程上下文类加载器方法引入,介绍为什么在线程中要有上下文类加载器的方法函数,从而掌握类在JVM的加载和初始化的整个过程,在该部分的最后通过分析mysql数据库驱动的初始化过程更进一步的解释了线程上下文类加载器存在的作用。第三部分主要围绕着volatile关键字展开,在该部分中我们将会了解到现代CPU的架构以及Java的内存模型(JMM),深入掌握高并发编程需要主要到的三个重要特性。最后一部分,主要站在架构设计的高度看待如何巧妙的开发出真正具备并发能力的系统,分别通过不同的场景描述结合我们在开发中经常遇到的问题引入线程模式。

汪文君

汇丰软件(广东)研发中心数据服务中心技术经理、技术专家,目前专注于实时数据datapipeline平台的构建与架构,在加入汇丰软件以前,曾有5年多的移动通讯工作经验,以及移动互联网、云计算和B2C电子商务平台的开发架构经验,热衷于技术分享、技术细节锤炼。目前已录制10余套技术视频,在互联网上广泛传播。

作品目录

  • 推荐序一
  • 推荐序二
  • 推荐序三
  • 推荐序四
  • 前言
  • 第一部分 多线程基础
  • 第1章 快速认识线程
  • 1.1 线程的介绍
  • 1.2 快速创建并启动一个线程
  • 1.3 线程的生命周期详解
  • 1.4 线程的start方法剖析:模板设计模式在Thread中的应用
  • 1.5 Runnable接口的引入以及策略模式在Thread中的使用
  • 1.6 本章总结
  • 第2章 深入理解Thread构造函数
  • 2.1 线程的命名
  • 2.2 线程的父子关系
  • 2.3 Thread与ThreadGroup
  • 2.4 Thread与Runnable
  • 2.5 Thread与JVM虚拟机栈
  • 2.6 守护线程
  • 2.7 本章总结
  • 第3章 Thread API的详细介绍
  • 3.1 线程sleep
  • 3.2 线程yield
  • 3.3 设置线程的优先级
  • 3.4 获取线程ID
  • 3.5 获取当前线程
  • 3.6 设置线程上下文类加载器
  • 3.7 线程interrupt
  • 3.8 线程join
  • 3.9 如何关闭一个线程
  • 3.10 本章总结
  • 第4章 线程安全与数据同步
  • 4.1 数据同步
  • 4.2 初识synchronized关键字
  • 4.3 深入synchronized关键字
  • 4.4 This Monitor和Class Monitor的详细介绍
  • 4.5 程序死锁的原因以及如何诊断
  • 4.6 本章总结
  • 第5章 线程间通信
  • 5.1 同步阻塞与异步非阻塞
  • 5.2 单线程间通信
  • 5.3 多线程间通信
  • 5.4 自定义显式锁BooleanLock
  • 5.5 本章总结
  • 第6章 ThreadGroup详细讲解
  • 6.1 ThreadGroup与Thread
  • 6.2 创建ThreadGroup
  • 6.3 复制Thread数组和ThreadGroup数组
  • 6.4 ThreadGroup操作
  • 6.5 本章总结
  • 第7章 Hook线程以及捕获线程执行异常
  • 7.1 获取线程运行时异常
  • 7.2 注入钩子线程
  • 7.3 本章总结
  • 第8章 线程池原理以及自定义线程池
  • 8.1 线程池原理
  • 8.2 线程池实现
  • 8.3 线程池的应用
  • 8.4 本章总结
  • 第二部分 Java ClassLoader
  • 第9章 类的加载过程
  • 9.1 类的加载过程简介
  • 9.2 类的主动使用和被动使用
  • 9.3 类的加载过程详解
  • 9.4 本章总结
  • 第10章 JVM类加载器
  • 10.1 JVM内置三大类加载器
  • 10.2 自定义类加载器
  • 10.3 本章总结
  • 第11章 线程上下文类加载器
  • 11.1 为什么需要线程上下文类加载器
  • 11.2 数据库驱动的初始化源码分析
  • 11.3 本章总结
  • 第三部分 深入理解volatile关键字
  • 第12章 volatile关键字的介绍
  • 12.1 初识volatile关键字
  • 12.2 机器硬件CPU
  • 12.3 Java内存模型
  • 12.4 本章总结
  • 第13章 深入volatile关键字
  • 13.1 并发编程的三个重要特性
  • 13.2 JMM如何保证三大特性
  • 13.3 volatile关键字深入解析
  • 13.4 本章总结
  • 第14章 7种单例设计模式的设计
  • 14.1 饿汉式
  • 14.2 懒汉式
  • 14.3 懒汉式+同步方法
  • 14.4 Double-Check
  • 14.5 Volatile+Double-Check
  • 14.6 Holder方式
  • 14.7 枚举方式
  • 14.8 本章总结
  • 第四部分 多线程设计架构模式
  • 第15章 监控任务的生命周期
  • 15.1 场景描述
  • 15.2 当观察者模式遇到Thread
  • 15.3 本章总结
  • 第16章 Single Thread Execution设计模式
  • 16.1 机场过安检
  • 16.2 吃面问题
  • 16.3 本章总结
  • 第17章 读写锁分离设计模式
  • 17.1 场景描述
  • 17.2 读写分离程序设计
  • 17.3 读写锁的使用
  • 17.4 本章总结
  • 第18章 不可变对象设计模式
  • 18.1 线程安全性
  • 18.2 不可变对象的设计
  • 18.3 本章总结
  • 第19章 Future设计模式
  • 19.1 先给你一张凭据
  • 19.2 Future设计模式实现
  • 19.3 Future的使用以及技巧总结
  • 19.4 增强FutureService使其支持回调
  • 19.5 本章总结
  • 第20章 Guarded Suspension设计模式
  • 20.1 什么是Guarded Suspension设计模式
  • 20.2 Guarded Suspension的示例
  • 20.3 本章总结
  • 第21章 线程上下文设计模式
  • 21.1 什么是上下文
  • 21.2 线程上下文设计
  • 21.3 ThreadLocal详解
  • 21.4 使用ThreadLocal设计线程上下文
  • 21.5 本章总结
  • 第22章 Balking设计模式
  • 22.1 什么是Balking设计
  • 22.2 Balking模式之文档编辑
  • 22.3 本章总结
  • 第23章 Latch设计模式
  • 23.1 什么是Latch
  • 23.2 CountDownLatch程序实现
  • 23.3 本章总结
  • 第24章 Thread-Per-Message设计模式
  • 24.1 什么是Thread-Per-Message模式
  • 24.2 每个任务一个线程
  • 24.3 多用户的网络聊天
  • 24.4 本章总结
  • 第25章 Two Phase Termination设计模式
  • 25.1 什么是Two Phase Termination模式
  • 25.2 Two Phase Termination的示例
  • 25.3 知识扩展
  • 25.4 本章总结
  • 第26章 Worker-Thread设计模式
  • 26.1 什么是Worker-Thread模式
  • 26.2 Worker-Thread模式实现
  • 26.3 本章总结
  • 第27章 Active Objects设计模式
  • 27.1 接受异步消息的主动对象
  • 27.2 标准Active Objects模式设计
  • 27.3 通用Active Objects框架设计
  • 27.4 本章总结
  • 第28章 Event Bus设计模式
  • 28.1 Event Bus设计
  • 28.2 Event Bus实战——监控目录变化
  • 28.3 本章总结
  • 第29章 Event Driven设计模式
  • 29.1 Event-Driven Architecture基础
  • 29.2 开发一个Event-Driven框架
  • 29.3 Event-Driven的使用
  • 29.4 本章总结
展开全部