Skip to content

Commit 9eac9e9

Browse files
committed
feat: 增加多线程与并发编程的资料,并阐述多线程的学习顺序和必须掌握的知识点
1 parent 84c356b commit 9eac9e9

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
## 前言
2+
3+
毋庸置疑,多线程的知识点非常多,又杂又深,我仅以 Android 端的角度来谈谈,多线程的知识点要掌握到什么程度。
4+
5+
1. 要掌握多线程的基础知识,包括线程的介绍和线程调度基本原理;
6+
2. 了解多线程为什么会有安全问题?我们怎么实现线程安全;
7+
3. 掌握多线程优化的方法,包括线程之间的协作方式。
8+
9+
## 如何学习?
10+
11+
多线程的知识点有依赖关联性,所以学起来顺序很重要:
12+
13+
1. 开篇:首先我们要学习【内存模型】相关的概念和知识,熟练使用多线程的基础【Thread 类】,知道Thread 线程的基本概念、状态,还有 wait,notify,join 等多线程基本的通信手段。
14+
15+
2. 基础:了解过 Thread 之后,我们就要狠扎多线程的基础理论点了,我们要搞懂关键字 【synchronized】和 【volatile】,并且结合第一步学到的【JMM内存模型】来深入体会这 2 个关键字的作用和内存屏障。
16+
17+
3. 进阶:现在我们就知道为什么我们要减少创建线程对象的数量,【线程切换】会带来严重的性能问题,包括:线程上下文切换,线程状态的切换。这就引申出了【锁】、【CAS 原子算法】、【JVM 多锁的优化】、【重入锁】。
18+
19+
4. 应用:到此为止,我想大家对于多线程的理论至少已经有了基本的概念,接下来就要学习多线程的核心:【线程池】 ,除了原理,还要学习在各个【异步库】中,是怎么根据实际场景自定义线程池的,比如 AsyncTask、IntentService、OkHttp。
20+
21+
5. 末章:最后,别忘了,Java 的【并发集合】,如:CopyOnWriteArrayList、ConcurrentHashMap。
22+
23+
相信按照这个顺序,多线程和并发学起来并不吃力,面试官的问题都难不倒你了。
24+
25+
## 开篇 - 博文
26+
27+
- [探索 Android 多线程优化方法](https://juejin.im/post/5d45a75de51d4561ee1bdf10)
28+
> 本文跨度很大,不仅介绍了线程和调度的基本原理,还有实现线程安全的方案,更有Android中执行异步任务的方式介绍,建议多读几遍。
29+
30+
## 基础 - 博文
31+
32+
## 进阶 - 博文
33+
34+
35+
36+
## 应用 - 博文
37+
38+
- [面试官:说说多线程并发问题](https://juejin.im/post/5d7da37d6fb9a06b0202f156)
39+
> 总结很到位,结合了不同场景分析解决并发问题的处理方式,如果是应付面试的话按照这篇文章的思路来准备应该是没太大问题的。
40+
41+
## 末章 - 博文

SUMMARY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@
261261

262262
* 垃圾回收和GC
263263

264-
* 多线程(并发锁)
264+
* [多线程与并发编程](6. 基础能力/多线程与并发.md)
265265

266266
* 网络协议
267267

0 commit comments

Comments
 (0)