android 多线程 — 学习目录

ps:2019.5.1 重写本篇

android 多线程 — 学习目录_第1张图片

多线程毋庸置疑的点非常多,很杂也很深,你要是做后台开发可以研究的非常深入,甚至像阿里一样自己修改 JVM(租户的概念),即便你是做 android 开发的朋友,多线程一样也是要很熟,移动端太多的场景需要异步执行了,虽然我们有开源的异步执行库,但是不代表我们自己就可以不会多线程的使用了,至少多线程基础的概念,同步,锁的类型,锁的优化,线程池,阻塞队列,callback,futrueTask 都是基本要会的,有些功能可能要我们自己做异步实现,比如数据库操作,日志埋点操作,自己写的异步操作可以操作性更强

学习多线程是要按部就班的来,因为点多,难易程度不同,并且前后概念由依赖关联性,所以顺序很重要

  1. 多线程的基础 Thread 类我们必须要熟练,熟悉 Thread 的创建,和 Callable、Future、FutureTask 的配和,Thread 线程的基本概念,状态,还有 wait,notify,join 等多线程基本的通信手段

    • android 多线程 — Thread
    • android 多线程 — Callable、Future、FutureTask
  2. 了解过 Thread 之后,我们就要狠扎多线程的基础理论点了,我们要搞懂 java 同步的2个关键字 synchronized 和 volatile,并且结合 java 内存模型来深入体会这2个关键字的作用,然后我们在学习完内存模型后顺带着把 GC 原理搞懂了,都是在一块的知识点,连带着学最合适。下一步我们就要知道为什么我们要减少创建线程对象的数量,线程切换会带来严重的性能问题,包括:线程上下文切换,线程状态的切换。在这之后我们就要学习同步的关键了:锁,锁的原理,CAS 原子算法,JVM 多锁的优化, reentrantLock 重入锁,然后再结合一个小例子,体会下同步

    • android 多线程 — synchronized
    • android 多线程 — volatile
    • android 多线程 — java 内存模型
    • android 多线程 — GC
    • android 多线程 — 线程上下文切换
    • android 多线程 — reentrantLock 重入锁
    • android 多线程 — 锁基础
    • android 多线程 — CAS 算法 + 原子性操作类
    • android 多线程 — 锁优化
    • android 多线程 — 谁的锁,锁的谁
    • android 多线程 — 从一个小例子再次品位多线程
  3. 这个时候我想大家对于多线程的理论至少已经有了立体的概念,这样我们最后面的学习中才不会出现吃力的现象,这个时候我们就要学习多线程的核心:线程池 了,学习其原理,学习他在各个异步任务库中的实现,这里设计到 android 的知识点了

    • android 多线程 — 线程池基础
    • android 多线程 — 线程池原理
    • android 多线程 — 线程池线程数配置
    • android 多线程 — handle 学习
    • android 多线程 — HandlerThread
    • android 多线程 — IntentService
    • android 多线程 — AsyncTask 使用
    • android 多线程 — AsyncTask 源码简单分析
    • android 线程池应用(1) - AsyncTask
    • android 线程池应用(2) - okhttp
  4. 上面的学完了,使用多线程基本没问题了,但是上面的说实话只是多线程的基本,后面还有呢,继续深入学习的话看下面,这部分我会逐渐添加新内容的

    • android 多线程 — 并发集合 CopyOnWriteArrayList、ConcurrentHashMap

上面都是我自己学习多线程的感悟,基于自己的理解和学习习惯,顺序,进度,要是大家在看一些点的时候看的不是那么透彻或是没搞懂的话可以看下面的资料:

  1. 平台
  • 六尺帐篷 | Carson_Ho | 英勇青铜5 | 泽毛 | 香沙小熊 | jiajun_geek | 海子

优先推荐:香沙小熊 同学的资料,入门性更好

  1. 其他
  • 死磕 Java 系列
    这个里面多线程非常的全
  • java,多线程学习 _ github

你可能感兴趣的:(android 多线程 — 学习目录)