并发编程专题开篇
自认为还算是一个技术爱好者(软件相关)。不管是在学校还是在工作岗位上,都一直保持买书,看书的这样一个优良习惯。除了保持内心沉(zhuang)静(bi),更重要的是我能系统深入学到很多东西。
但是自从患上拖延症和懒癌之后,我学到的很多东西都藏在肚子里,最后烂在肚子里了,也就白学了。因此,我决定,未来4个月好好总结和回顾过去学到的东西,并且以专题的形式总结和分享出来(尽最大努力酿酒,巷子深浅与否看造化了)。
9月和10月(2016)我想总结和分享的专题是Java编程里最具有挑战性的一个----并发编程。
根据我对并发编程的理解,我将深入浅出,由表入里,步步为营将并发编程分成这样13篇文章来讲解。当然,这远远不是并发编程的全部。很多知识点我也只能说一个思路或者大概样貌,不可能面面俱到。下面是我暂时拟出的一个讲解框架:
-
并发编程历史观
这里主要说一下并发编程的由来,一些基本概念和术语。同时会从宏观(分布式)和微观(多线程)谈一下并发。最后,展望一下未来,说一下协程。 -
Java并发编程的基本手段
实现Java多线程的手段以及基本用法(Thread,Runnable,Callable),static,final等对线程安全的意义 -
多线程带来的线程安全和线程通信问题
引出临界区,数据竞争以及线程通信模型,深入讲解线程通信的方法(分析ThreadLocal类)以及意义 -
深入理解原子性与可见性
因为多线程通信问题,可能引发原子性和可见性等问题,从Java语言层面讲解原子性和可见性 -
深入理解Java内存模型(JMM)
继续深入,理解JMM,从JMM角度深入理解synchronized和volatile -
J.U.C概述
JDK并发工具包介绍,从该包的结构以及功能上做一个概述,为后面的分解铺垫思路 -
深入J.U.C中的锁
深入分析Java语言层面提供的锁机制以及实现原理,对比分析synchronized的异同和优劣 -
深入J.U.C中Executor框架
深入分析Java中线程池,比较分析4中线程池的异同以及用法 -
深入J.U.C中并发容器类
简单分析各个容器类的作用和用法,重点分析ConcurrentHashMap -
深入J.U.C中原子类
简单分析各种原子类的用法以及作用,重点分析CAS操作的实现以及底层机制 -
深入J.U.C中并发工具类
简单分析各个工具类的用法以及作用,重点分析CountDownLatch和CyclicBarrier -
并发编程总结
总结这个专题的意义以及不足,说一下并发的测试思路
这个思路从简单到复杂,基本是按照并发编程学习的思路来的。当然,各个章节也很独立。可以作为单独的复习或学习参考。希望这个专题能给自己和他人带来知识上的梳理与巩固。
Good Luck to you and me!
首发我的个人博客:http://wantedonline.cn