站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

写在前面

多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲。在平时工作中如若使用不当会出现数据错乱、执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关重要。

笔者在读完市面上关于Java并发编程的资料后,感觉有些知识点不是很清晰,于是在RedSpider社区内展开了对Java并发编程原理的讨论。鉴于开源精神,我们决定将我们讨论之后的Java并发编程原理整理成书籍,分享给大家。

站在巨人的肩上,我们可以看得更远。本书内容的主要来源有博客、书籍、论文,对于一些已经叙述得很清晰的知识点我们直接引用在本书中;对于一些没有讲解清楚的知识点,我们加以画图或者编写Demo进行加工;而对于一些模棱两可的知识点,本书在查阅了大量资料的情况下,给出最合理的解释。

写本书的过程也是对自己研究和掌握的技术点进行整理的过程,希望本书能帮助读者快速掌握并发编程技术。

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

内容简介

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第1章 进程与线程的基本概念

1.1 进程产生的背景

1.2 上下文切换

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第2章 Java多线程入门类和接口

2.1 Thread类和Runnable接口

2.1.1 继承Thread类2.1.2 实现Runnable接口2.1.3 Thread类构造方法2.1.4 Thread类的几个常用方法2.1.5 Thread类与Runnable接口的比较

2.2 Callable、Future与FutureTask

2.2.1 Callable接口2.2.2 Future接口2.2.3 FutureTask类2.2.4 FutureTask的几个状态

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第3章 线程组和线程优先级

3.1 线程组(ThreadGroup)

3.2 线程的优先级

3.3 线程组的常用方法及数据结构

3.3.1 线程组的常用方法3.3.2 线程组的数据结构

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第4章 Java线程的状态及主要转化方法

4.1 操作系统中的线程状态转换

4.2 Java线程的6个状态

4.2.1 NEW4.2.2 RUNNABLE4.2.3 BLOCKED4.2.4 WAITING4.2.5 TIMED_WAITING4.2.6 TERMINATED

4.3 线程状态的转换

4.3.1 BLOCKED与RUNNABLE状态的转换4.3.2 WAITING状态与RUNNABLE状态的转换4.3.3 TIMED_WAITING与RUNNABLE状态转换4.3.4 线程中断

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第5章 Java线程间的通信

5.1 锁与同步

5.2 等待/通知机制

5.3 信号量

5.4 管道

5.5 其它通信相关

5.5.1 join方法5.5.2 sleep方法5.5.3 ThreadLocal类5.5.4 InheritableThreadLocal

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

第6章 Java内存模型基础知识

6.1 并发编程模型的两个关键问题

6.2 Java内存模型的抽象结构

6.2.1 运⾏时内存的划分6.2.2 既然堆是共享的,为什么在堆中会有内存不可⻅问题?6.2.3 JMM与Java内存区域划分的区别与联系

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第7章 重排序与happens-before

7.1 什么是重排序?

7.2 顺序一致性模型与JMM的保证

7.2.1 数据竞争与顺序一致性7.2.2 顺序一致性模型7.2.3 JMM中同步程序的顺序一致性效果7.2.4 JMM中未同步程序的顺序一致性效果

7.3 happens-before

7.3.1 什么是happens-before?7.3.2 天然的happens-before关系

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第8章 volatile

8.1 几个基本概念

8.1.1 内存可见性8.1.2 重排序8.1.3 happens-before规则

8.2 volatile的内存语义

8.2.1 内存可见性8.2.1 禁止重排序

8.3 volatile的用途

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第9章 synchronized与锁

9.1 Synchronized关键字

9.2 几种锁

9.2.1 Java对象头9.2.2 偏向锁9.2.3 轻量级锁9.2.4 重量级锁9.2.5 总结锁的升级流程9.2.6 各种锁的优缺点对比

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第10章 乐观锁和悲观锁

10.1 乐观锁与悲观锁的概念

10.2 CAS的概念

10.3 Java实现CAS的原理 – Unsafe类

10.4 原子操作-AtomicInteger类源码简析

10.5 CAS实现原子操作的三大问题

10.5.1 ABA问题10.5.2 循环时间长开销大10.5.3 只能保证一个共享变量的原子操作

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

转发+关注,然后私信回复我 “多线程”  即可获得《深入浅出Java多线程》文档资料的免费领取方式。

第11章 AQS

11.1 AQS简介

11.2 AQS的数据结构

11.3 资源共享模式

11.4 AQS的主要方法源码解析

11.4.1 获取资源

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第12章 线程池原理

12.1 为什么要使用线程池

12.2 线程池的原理

12.2.1 ThreadPoolExecutor提供的构造方法12.2.2 ThreadPoolExecutor的策略12.2.3 线程池主要的任务处理流程12.2.4 ThreadPoolExecutor如何做到线程复用的?

12.3 四种常见的线程池

12.3.1 newCachedThreadPool12.3.2 newFixedThreadPool12.3.3 newSingleThreadExecutor12.3.4 newScheduledThreadPool

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第13章 阻塞队列

13.1 阻塞队列的由来

13.2 BlockingQueue的操作方法

13.3 BlockingQueue的实现类

13.3.1 ArrayBlockingQueue13.3.2 LinkedBlockingQueue13.3.3 DelayQueue13.3.4 PriorityBlockingQueue13.3.5 SynchronousQueue

13.5 阻塞队列的原理

13.6 示例和使用场景

13.6.1 生产者-消费者模型13.6.2 线程池中使用阻塞队列

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第14章 锁接口和类

14.1 synchronized的不足之处

14.2 锁的几种分类

14.2.1 可重入锁和非可重入锁14.2.2 公平锁与非公平锁14.2.3 读写锁和排它锁

14.3 JDK中有关锁的一些接口和类

14.3.1 抽象类AQS/AQLS/AOS14.3.2 接口Condition/Lock/ReadWriteLock14.3.3 ReentrantLock14.3.4 ReentrantReadWriteLock14.3.5 StampedLock

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第15章 并发容器集合

15.1 同步容器与并发容器

15.2 并发容器类介绍

15.2.1 并发Map15.2.2 并发Queue15.2.3 并发Set

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第16章 CopyOnWrite容器

16.1 什么是CopyOnWrite容器

16.2 CopyOnWriteArrayList

16.3 CopyOnWrite的业务中实现

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第17章 通信工具类

17.1 Semaphore

17.1.1 Semaphore介绍17.1.2 Semaphore案例17.1.3 Semaphore原理

17.2 Exchanger

17.3 CountDownLatch

17.3.1 CountDownLatch介绍17.3.2 CountDownLatch案例17.3.3 CountDownLatch原理

17.4 CyclicBarrier

17.4.1 CyclicBarrier介绍17.4.2 CyclicBarrier Barrier被破坏17.4.3 CyclicBarrier案例17.4.4 CyclicBarrier原理

17.5 Phaser

17.5.1 Phaser介绍17.5.2 Phaser案例17.5.3 Phaser原理

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第18章 Fork/Join框架

18.1 什么是Fork/Join

18.2 工作窃取算法

18.3 Fork/Join的具体实现

18.3.1 ForkJoinTask18.3.2 ForkJoinPool18.4 Fork/Join的使用

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第19章 Java 8 Stream并行计算原理

19.1 Java 8 Stream简介

19.2 Stream单线程串行计算

19.3 Stream多线程并行计算

19.4 从源码看Stream并行计算原理

19.5 Stream并行计算的性能提升

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

 

第二十章 计划任务

20.1 使用案例

20.2 类结构

20.3 主要方法介绍

20.3.1 schedule20.3.2 scheduledAtFixedRate20.3.3 scheduledAtFixedDelay20.3.4 delayedExecute

20.4 DelayedWorkQueue

20.4.1 take20.4.2 offer

20.5 总结

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » 站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏