原创文章&经验总结&从校招到A厂一路阳光一路沧桑
详情请戳www.codercc.com
努力的意义,就是,在以后的日子里,放眼望去全是自己喜欢的人和事!
时间总是不知不觉的就溜走了,一晃,学生时代就真的要结束了。前天才吃完了师门的最后的聚餐,痛痛快快的喝了一顿酒。在酒中,对身边的人感恩,也像是自己在对自己的学生时代告别。自己也特别喜欢校园这种简单单纯,让人觉得很青春年轻的感觉,但是,是该开启另一段人生旅程了。
从去年结束秋招,但现在忙完毕业论文答辩,这段时间应该算是“间隔月”。在完成秋招的时候,我对自己说,等有空余时间的时候,好好整理下。在准确秋招的时候,很多就是很直接去看面试题,像准备考试一样,但很多感悟都是后知后觉的,但只要不是太晚就行。
自己特别喜欢并发问题,所以,我答应自己在间隔月好好理一下并发的基础知识,算是给自己学生时代结束的礼物,我想,这一切就像是春日的阳光,温暖而静谧......最后,再多看看校园的梧桐。
关于这篇文章:(1)包含了并发的基础知识,每个标题链接到一篇具体的文章;(2)包含了秋招面试的问题,弄懂了会让你有所收获(也祝大家都能找到心仪的工作:))(3)在阅读过程中,如果有所帮助,麻烦点赞,算是对我的鼓励,因为这所有的文章都是我亲手打进去的,码过字的应该都知道这其中所需要的坚持。
-
基础知识
1.1 并发编程的优缺点
知识点:(1)为什么要用到并发?(优点);(2)并发编程的缺点;(3)易混淆的概念
1.2 线程的状态和基本操作
知识点:(1)如何新建线程;(2)线程状态的转换;(3)线程的基本操作;(4)守护线程Daemon;
-
并发理论(JMM)
知识点:(1)JMM内存结构;(2)重排序;(3)happens-before规则
-
并发关键字
知识点:(1)如何使用synchronized;(2)monitor机制;(3)synchronized的happens-before关系;(4)synchronized的内存语义;(5)锁优化;(6)锁升级策略
3.2 让你彻底理解volatile
知识点:(1)实现原理;(2)happens-before的关系推导;(3)内存语义;(4)内存语义的实现
3.3 你以为你真的了解final吗?
知识点:(1)如何使用;(2)final的重排序规则;(3)final实现原理;(4)final引用不能从构造函数中“溢出”(this逃逸)
知识点:(1)原子性:synchronized;(2)可见性:synchronized,volatile;(3)有序性:synchronized,volatile
-
Lock体系
4.1 初识Lock与AbstractQueuedSynchronizer(AQS)
知识点:(1)Lock和synchronized的比较;(2)AQS设计意图;(3)如何使用AQS实现自定义同步组件;(4)可重写的方法;(5)AQS提供的模板方法;
4.2 深入理解AbstractQueuedSynchronizer(AQS)
知识点:(1)AQS同步队列的数据结构;(2)独占式锁;(3)共享式锁;
知识点:(1)重入锁的实现原理;(2)公平锁的实现原理;(3)非公平锁的实现原理;(4)公平锁和非公平锁的比较
4.4 深入理解读写锁ReentrantReadWriteLock
知识点:(1)如何表示读写状态;(2)WriteLock的获取和释放;(3)ReadLock的获取和释放;(4)锁降级策略;(5)生成Condition等待队列;(6)应用场景
4.5 详解Condition的await和signal等待/通知机制
知识点:(1)与Object的wait/notify机制相比具有的特性;(2)与Object的wait/notify相对应的方法;(3)底层数据结构;(4)await实现原理;(5)signal/signalAll实现原理;(6)await和signal/signalAll的结合使用;
4.6 LockSupport工具
知识点:(1)主要功能;(2)与synchronized阻塞唤醒相比具有的特色;
-
并发容器
5.1 并发容器之ConcurrentHashMap(JDK 1.8版本)
知识点:(1)关键属性;(2)重要内部类;(3)涉及到的CAS操作;(4)构造方法;(5)put执行流程;(6)get执行流程;(7)扩容机制;(8)用于统计size的方法的执行流程;(9)1.8版本的ConcurrentHashMap与之前版本的比较
知识点:(1)实现原理;(2)COW和ReentrantReadWriteLock的区别;(3)应用场景;(4)为什么具有弱一致性;(5)COW的缺点;
5.3 并发容器之ConcurrentLinkedQueue
知识点:(1)实现原理;(2)数据结构;(3)核心方法;(4)HOPS延迟更新的设计意图
5.4 并发容器之ThreadLocal
知识点:(1)实现原理;(2)set方法原理;(3)get方法原理;(4)remove方法原理;(5)ThreadLocalMap
知识点:(1)ThreadLocal内存泄漏原理;(2)ThreadLocal的最佳实践;(3)应用场景
知识点:(1)BlockingQueue的基本操作;(2)常用的BlockingQueue;
-
线程池(Executor体系)
6.1 线程池实现原理
知识点:(1)为什么要用到线程池?(2)执行流程;(3)构造器各个参数的意义;(4)如何关闭线程池;(5)如何配置线程池;
6.2 线程池之ScheduledThreadPoolExecutor
知识点:(1)类结构;(2)常用方法;(3)ScheduledFutureTask;(3)DelayedWorkQueue;
6.3 FutureTask基本操作总结
知识点:(1)FutureTask的几种状态;(2)get方法;(3)cancel方法;(4)应用场景;(5)实现 Runnable接口
-
原子操作类
知识点:(1)实现原理;(2)原子更新基本类型;(3)原子更新数组类型;(4)原子更新引用类型;(5)原子更新字段类型
-
并发工具
8.1 大白话说java并发工具类-CountDownLatch,CyclicBarrier
知识点:(1)倒计时器CountDownLatch;(2)循环栅栏CyclicBarrier;(3)CountDownLatch与CyclicBarrier的比较
8.2 大白话说java并发工具类-Semaphore,Exchanger
知识点:(1)资源访问控制Semaphore;(2)数据交换Exchanger
-
并发实践
JAVA并发知识图谱
可移动到新窗口,放大查看效果更好或者查看原图