| 
 | 1 | + | 
 | 2 | + | 
 | 3 | +> 努力的意义,就是,在以后的日子里,放眼望去全是自己喜欢的人和事!  | 
 | 4 | +
  | 
 | 5 | +github:[https://github.com/CL0610/Java-concurrency](https://github.com/CL0610/Java-concurrency),欢迎题issue和Pull request。所有的文档都是自己亲自码的,如果觉得不错,欢迎给star鼓励支持 **:)**  | 
 | 6 | + | 
 | 7 | + | 
 | 8 | +整个系列文章为J**ava并发专题**,一是自己的兴趣,二是,这部分在实际理解上很有难度,另外在面试过程中也是经常被问到。所以在学习过程中,记录了Java并发相关的基础知识,一是自己对知识能够建立体系,同时也希望有幸能够对其他人有用。  | 
 | 9 | + | 
 | 10 | + | 
 | 11 | +关于Java并发专题:  | 
 | 12 | + | 
 | 13 | + | 
 | 14 | +(1)包含了并发的基础知识,每个标题链接到一篇具体的文章;  | 
 | 15 | + | 
 | 16 | +(2)包含了秋招面试的问题,弄懂了会让你有所收获(也祝大家都能找到心仪的工作**:)** )  | 
 | 17 | + | 
 | 18 | +(3)在阅读过程中,如果有所帮助,麻烦点赞,算是对我码字的这份坚持的鼓励。  | 
 | 19 | + | 
 | 20 | +**注:转载请标明原处,谢谢!**  | 
 | 21 | + | 
 | 22 | +1. **基础知识**  | 
 | 23 | + | 
 | 24 | +1.1 [并发编程的优缺点](https://juejin.im/post/5ae6c3ef6fb9a07ab508ac85)  | 
 | 25 | + | 
 | 26 | +知识点:(1)为什么要用到并发?(优点);(2)并发编程的缺点;(3)易混淆的概念  | 
 | 27 | + | 
 | 28 | +1.2 [线程的状态和基本操作](https://juejin.im/post/5ae6cf7a518825670960fcc2)  | 
 | 29 | + | 
 | 30 | +知识点:(1)如何新建线程;(2)线程状态的转换;(3)线程的基本操作;(4)守护线程Daemon;  | 
 | 31 | + | 
 | 32 | +2. **并发理论(JMM)**  | 
 | 33 | + | 
 | 34 | +[java内存模型以及happens-before规则](https://juejin.im/post/5ae6d309518825673123fd0e)  | 
 | 35 | + | 
 | 36 | +知识点:(1)JMM内存结构;(2)重排序;(3)happens-before规则  | 
 | 37 | + | 
 | 38 | + | 
 | 39 | +3. **并发关键字**  | 
 | 40 | + | 
 | 41 | +3.1 [让你彻底理解Synchronized](https://juejin.im/post/5ae6dc04f265da0ba351d3ff)  | 
 | 42 | + | 
 | 43 | +知识点:(1)如何使用synchronized;(2)monitor机制;(3)synchronized的happens-before关系;(4)synchronized的内存语义;(5)锁优化;(6)锁升级策略  | 
 | 44 | + | 
 | 45 | +3.2 [让你彻底理解volatile](https://juejin.im/post/5ae9b41b518825670b33e6c4)  | 
 | 46 | + | 
 | 47 | +知识点:(1)实现原理;(2)happens-before的关系推导;(3)内存语义;(4)内存语义的实现  | 
 | 48 | + | 
 | 49 | +3.3 [你以为你真的了解final吗?](https://juejin.im/post/5ae9b82c6fb9a07ac3634941)  | 
 | 50 | + | 
 | 51 | +知识点:(1)如何使用;(2)final的重排序规则;(3)final实现原理;(4)final引用不能从构造函数中“溢出”(this逃逸)  | 
 | 52 | + | 
 | 53 | +3.4 [三大性质总结:原子性,有序性,可见性](https://juejin.im/post/5aeb022cf265da0b722af7b8)  | 
 | 54 | + | 
 | 55 | +知识点:(1)原子性:synchronized;(2)可见性:synchronized,volatile;(3)有序性:synchronized,volatile  | 
 | 56 | + | 
 | 57 | +4. **Lock体系**  | 
 | 58 | + | 
 | 59 | +4.1 [初识Lock与AbstractQueuedSynchronizer(AQS)](https://juejin.im/post/5aeb055b6fb9a07abf725c8c)  | 
 | 60 | + | 
 | 61 | +知识点:(1)Lock和synchronized的比较;(2)AQS设计意图;(3)如何使用AQS实现自定义同步组件;(4)可重写的方法;(5)AQS提供的模板方法;  | 
 | 62 | + | 
 | 63 | +4.2 [深入理解AbstractQueuedSynchronizer(AQS)](https://juejin.im/post/5aeb07ab6fb9a07ac36350c8)  | 
 | 64 | + | 
 | 65 | +知识点:(1)AQS同步队列的数据结构;(2)独占式锁;(3)共享式锁;  | 
 | 66 | + | 
 | 67 | +4.3 [再一次理解ReentrantLock](https://juejin.im/post/5aeb0a8b518825673a2066f0)  | 
 | 68 | + | 
 | 69 | +知识点:(1)重入锁的实现原理;(2)公平锁的实现原理;(3)非公平锁的实现原理;(4)公平锁和非公平锁的比较  | 
 | 70 | + | 
 | 71 | +4.4 [深入理解读写锁ReentrantReadWriteLock](https://juejin.im/post/5aeb0e016fb9a07ab7740d90)  | 
 | 72 | + | 
 | 73 | +知识点:(1)如何表示读写状态;(2)WriteLock的获取和释放;(3)ReadLock的获取和释放;(4)锁降级策略;(5)生成Condition等待队列;(6)应用场景  | 
 | 74 | + | 
 | 75 | +4.5 [详解Condition的await和signal等待/通知机制](https://juejin.im/post/5aeea5e951882506a36c67f0)  | 
 | 76 | + | 
 | 77 | +知识点:(1)与Object的wait/notify机制相比具有的特性;(2)与Object的wait/notify相对应的方法;(3)底层数据结构;(4)await实现原理;(5)signal/signalAll实现原理;(6)await和signal/signalAll的结合使用;  | 
 | 78 | + | 
 | 79 | +**4.6 [LockSupport工具](https://www.jianshu.com/p/9677a754cf60)**  | 
 | 80 | + | 
 | 81 | +知识点:(1)主要功能;(2)与synchronized阻塞唤醒相比具有的特色;  | 
 | 82 | + | 
 | 83 | + | 
 | 84 | +5. **并发容器**  | 
 | 85 | + | 
 | 86 | +5.1 [并发容器之ConcurrentHashMap(JDK 1.8版本)](https://juejin.im/post/5aeeaba8f265da0b9d781d16)  | 
 | 87 | + | 
 | 88 | +知识点:(1)关键属性;(2)重要内部类;(3)涉及到的CAS操作;(4)构造方法;(5)put执行流程;(6)get执行流程;(7)扩容机制;(8)用于统计size的方法的执行流程;(9)1.8版本的ConcurrentHashMap与之前版本的比较  | 
 | 89 | + | 
 | 90 | +5.2 [并发容器之CopyOnWriteArrayList](https://juejin.im/post/5aeeb55f5188256715478c21)  | 
 | 91 | + | 
 | 92 | +知识点:(1)实现原理;(2)COW和ReentrantReadWriteLock的区别;(3)应用场景;(4)为什么具有弱一致性;(5)COW的缺点;  | 
 | 93 | + | 
 | 94 | +5.3 [并发容器之ConcurrentLinkedQueue](https://juejin.im/post/5aeeae756fb9a07ab11112af)  | 
 | 95 | + | 
 | 96 | +知识点:(1)实现原理;(2)数据结构;(3)核心方法;(4)HOPS延迟更新的设计意图  | 
 | 97 | + | 
 | 98 | +5.4 [并发容器之ThreadLocal](https://juejin.im/post/5aeeb22e6fb9a07aa213404a)  | 
 | 99 | + | 
 | 100 | +知识点:(1)实现原理;(2)set方法原理;(3)get方法原理;(4)remove方法原理;(5)ThreadLocalMap  | 
 | 101 | + | 
 | 102 | +[一篇文章,从源码深入详解ThreadLocal内存泄漏问题](https://www.jianshu.com/p/dde92ec37bd1)  | 
 | 103 | + | 
 | 104 | +知识点:(1)ThreadLocal内存泄漏原理;(2)ThreadLocal的最佳实践;(3)应用场景  | 
 | 105 | + | 
 | 106 | +5.5 [并发容器之BlockingQueue](https://juejin.im/post/5aeebd02518825672f19c546)  | 
 | 107 | + | 
 | 108 | +知识点:(1)BlockingQueue的基本操作;(2)常用的BlockingQueue;  | 
 | 109 | + | 
 | 110 | +[并发容器之ArrayBlockingQueue和LinkedBlockingQueue实现原理详解](https://juejin.im/post/5aeebdb26fb9a07aa83ea17e)  | 
 | 111 | + | 
 | 112 | +6. 线程池(Executor体系)  | 
 | 113 | + | 
 | 114 | +6.1 [线程池实现原理](https://juejin.im/post/5aeec0106fb9a07ab379574f)  | 
 | 115 | + | 
 | 116 | +知识点:(1)为什么要用到线程池?(2)执行流程;(3)构造器各个参数的意义;(4)如何关闭线程池;(5)如何配置线程池;  | 
 | 117 | + | 
 | 118 | +6.2 [线程池之ScheduledThreadPoolExecutor](https://juejin.im/post/5aeec106518825670a10328a)  | 
 | 119 | + | 
 | 120 | +知识点:(1)类结构;(2)常用方法;(3)ScheduledFutureTask;(3)DelayedWorkQueue;  | 
 | 121 | + | 
 | 122 | +6.3 [FutureTask基本操作总结](https://juejin.im/post/5aeec249f265da0b886d5101)  | 
 | 123 | + | 
 | 124 | +知识点:(1)FutureTask的几种状态;(2)get方法;(3)cancel方法;(4)应用场景;(5)实现 Runnable接口  | 
 | 125 | + | 
 | 126 | +7. 原子操作类  | 
 | 127 | + | 
 | 128 | +7.1 [Java中atomic包中的原子操作类总结](https://juejin.im/post/5aeec351518825670a103292)  | 
 | 129 | + | 
 | 130 | +知识点:(1)实现原理;(2)原子更新基本类型;(3)原子更新数组类型;(4)原子更新引用类型;(5)原子更新字段类型  | 
 | 131 | + | 
 | 132 | +8. 并发工具  | 
 | 133 | + | 
 | 134 | +8.1 [大白话说java并发工具类-CountDownLatch,CyclicBarrier](https://juejin.im/post/5aeec3ebf265da0ba76fa327)  | 
 | 135 | + | 
 | 136 | +知识点:(1)倒计时器CountDownLatch;(2)循环栅栏CyclicBarrier;(3)CountDownLatch与CyclicBarrier的比较  | 
 | 137 | + | 
 | 138 | +8.2 [大白话说java并发工具类-Semaphore,Exchanger](https://juejin.im/post/5aeec49b518825673614d183)  | 
 | 139 | + | 
 | 140 | +知识点:(1)资源访问控制Semaphore;(2)数据交换Exchanger  | 
 | 141 | + | 
 | 142 | +9. 并发实践  | 
 | 143 | + | 
 | 144 | +9.1 [一篇文章,让你彻底弄懂生产者--消费者问题](https://juejin.im/post/5aeec675f265da0b7c072c56)  | 
 | 145 | + | 
 | 146 | + | 
 | 147 | +> JAVA并发知识图谱  | 
 | 148 | +
  | 
 | 149 | +**可移动到新窗口,放大查看效果更好或者查看原图**  | 
 | 150 | + | 
 | 151 | +[知识图谱原图链接,如果有用,可克隆给自己使用](https://www.processon.com/mindmap/5ab5a979e4b0a248b0e026b3)  | 
 | 152 | + | 
 | 153 | + | 
 | 154 | +  | 
0 commit comments