原創(chuàng)文章&經(jīng)驗(yàn)總結(jié)&從校招到A廠一路陽光一路滄桑
詳情請戳www.codercc.com
努力的意義,就是,在以后的日子里,放眼望去全是自己喜歡的人和事!
時(shí)間總是不知不覺的就溜走了,一晃,學(xué)生時(shí)代就真的要結(jié)束了。前天才吃完了師門的最后的聚餐,痛痛快快的喝了一頓酒。在酒中,對身邊的人感恩,也像是自己在對自己的學(xué)生時(shí)代告別。自己也特別喜歡校園這種簡單單純,讓人覺得很青春年輕的感覺,但是,是該開啟另一段人生旅程了。
從去年結(jié)束秋招,但現(xiàn)在忙完畢業(yè)論文答辯,這段時(shí)間應(yīng)該算是“間隔月”。在完成秋招的時(shí)候,我對自己說,等有空余時(shí)間的時(shí)候,好好整理下。在準(zhǔn)確秋招的時(shí)候,很多就是很直接去看面試題,像準(zhǔn)備考試一樣,但很多感悟都是后知后覺的,但只要不是太晚就行。
自己特別喜歡并發(fā)問題,所以,我答應(yīng)自己在間隔月好好理一下并發(fā)的基礎(chǔ)知識,算是給自己學(xué)生時(shí)代結(jié)束的禮物,我想,這一切就像是春日的陽光,溫暖而靜謐......最后,再多看看校園的梧桐。
關(guān)于這篇文章:(1)包含了并發(fā)的基礎(chǔ)知識,每個(gè)標(biāo)題鏈接到一篇具體的文章;(2)包含了秋招面試的問題,弄懂了會讓你有所收獲(也祝大家都能找到心儀的工作:))(3)在閱讀過程中,如果有所幫助,麻煩點(diǎn)贊,算是對我的鼓勵,因?yàn)檫@所有的文章都是我親手打進(jìn)去的,碼過字的應(yīng)該都知道這其中所需要的堅(jiān)持。
-
基礎(chǔ)知識
知識點(diǎn):(1)為什么要用到并發(fā)?(優(yōu)點(diǎn));(2)并發(fā)編程的缺點(diǎn);(3)易混淆的概念
1.2 線程的狀態(tài)和基本操作
知識點(diǎn):(1)如何新建線程;(2)線程狀態(tài)的轉(zhuǎn)換;(3)線程的基本操作;(4)守護(hù)線程Daemon;
-
并發(fā)理論(JMM)
java內(nèi)存模型以及happens-before規(guī)則
知識點(diǎn):(1)JMM內(nèi)存結(jié)構(gòu);(2)重排序;(3)happens-before規(guī)則
-
并發(fā)關(guān)鍵字
知識點(diǎn):(1)如何使用synchronized;(2)monitor機(jī)制;(3)synchronized的happens-before關(guān)系;(4)synchronized的內(nèi)存語義;(5)鎖優(yōu)化;(6)鎖升級策略
3.2 讓你徹底理解volatile
知識點(diǎn):(1)實(shí)現(xiàn)原理;(2)happens-before的關(guān)系推導(dǎo);(3)內(nèi)存語義;(4)內(nèi)存語義的實(shí)現(xiàn)
3.3 你以為你真的了解final嗎?
知識點(diǎn):(1)如何使用;(2)final的重排序規(guī)則;(3)final實(shí)現(xiàn)原理;(4)final引用不能從構(gòu)造函數(shù)中“溢出”(this逃逸)
3.4 三大性質(zhì)總結(jié):原子性,有序性,可見性
知識點(diǎn):(1)原子性:synchronized;(2)可見性:synchronized,volatile;(3)有序性:synchronized,volatile
-
Lock體系
4.1 初識Lock與AbstractQueuedSynchronizer(AQS)
知識點(diǎn):(1)Lock和synchronized的比較;(2)AQS設(shè)計(jì)意圖;(3)如何使用AQS實(shí)現(xiàn)自定義同步組件;(4)可重寫的方法;(5)AQS提供的模板方法;
4.2 深入理解AbstractQueuedSynchronizer(AQS)
知識點(diǎn):(1)AQS同步隊(duì)列的數(shù)據(jù)結(jié)構(gòu);(2)獨(dú)占式鎖;(3)共享式鎖;
知識點(diǎn):(1)重入鎖的實(shí)現(xiàn)原理;(2)公平鎖的實(shí)現(xiàn)原理;(3)非公平鎖的實(shí)現(xiàn)原理;(4)公平鎖和非公平鎖的比較
4.4 深入理解讀寫鎖ReentrantReadWriteLock
知識點(diǎn):(1)如何表示讀寫狀態(tài);(2)WriteLock的獲取和釋放;(3)ReadLock的獲取和釋放;(4)鎖降級策略;(5)生成Condition等待隊(duì)列;(6)應(yīng)用場景
4.5 詳解Condition的await和signal等待/通知機(jī)制
知識點(diǎn):(1)與Object的wait/notify機(jī)制相比具有的特性;(2)與Object的wait/notify相對應(yīng)的方法;(3)底層數(shù)據(jù)結(jié)構(gòu);(4)await實(shí)現(xiàn)原理;(5)signal/signalAll實(shí)現(xiàn)原理;(6)await和signal/signalAll的結(jié)合使用;
4.6 LockSupport工具
知識點(diǎn):(1)主要功能;(2)與synchronized阻塞喚醒相比具有的特色;
-
并發(fā)容器
5.1 并發(fā)容器之ConcurrentHashMap(JDK 1.8版本)
知識點(diǎn):(1)關(guān)鍵屬性;(2)重要內(nèi)部類;(3)涉及到的CAS操作;(4)構(gòu)造方法;(5)put執(zhí)行流程;(6)get執(zhí)行流程;(7)擴(kuò)容機(jī)制;(8)用于統(tǒng)計(jì)size的方法的執(zhí)行流程;(9)1.8版本的ConcurrentHashMap與之前版本的比較
5.2 并發(fā)容器之CopyOnWriteArrayList
知識點(diǎn):(1)實(shí)現(xiàn)原理;(2)COW和ReentrantReadWriteLock的區(qū)別;(3)應(yīng)用場景;(4)為什么具有弱一致性;(5)COW的缺點(diǎn);
5.3 并發(fā)容器之ConcurrentLinkedQueue
知識點(diǎn):(1)實(shí)現(xiàn)原理;(2)數(shù)據(jù)結(jié)構(gòu);(3)核心方法;(4)HOPS延遲更新的設(shè)計(jì)意圖
知識點(diǎn):(1)實(shí)現(xiàn)原理;(2)set方法原理;(3)get方法原理;(4)remove方法原理;(5)ThreadLocalMap
一篇文章,從源碼深入詳解ThreadLocal內(nèi)存泄漏問題
知識點(diǎn):(1)ThreadLocal內(nèi)存泄漏原理;(2)ThreadLocal的最佳實(shí)踐;(3)應(yīng)用場景
知識點(diǎn):(1)BlockingQueue的基本操作;(2)常用的BlockingQueue;
并發(fā)容器之ArrayBlockingQueue和LinkedBlockingQueue實(shí)現(xiàn)原理詳解
-
線程池(Executor體系)
知識點(diǎn):(1)為什么要用到線程池?(2)執(zhí)行流程;(3)構(gòu)造器各個(gè)參數(shù)的意義;(4)如何關(guān)閉線程池;(5)如何配置線程池;
6.2 線程池之ScheduledThreadPoolExecutor
知識點(diǎn):(1)類結(jié)構(gòu);(2)常用方法;(3)ScheduledFutureTask;(3)DelayedWorkQueue;
知識點(diǎn):(1)FutureTask的幾種狀態(tài);(2)get方法;(3)cancel方法;(4)應(yīng)用場景;(5)實(shí)現(xiàn) Runnable接口
-
原子操作類
7.1 Java中atomic包中的原子操作類總結(jié)
知識點(diǎn):(1)實(shí)現(xiàn)原理;(2)原子更新基本類型;(3)原子更新數(shù)組類型;(4)原子更新引用類型;(5)原子更新字段類型
-
并發(fā)工具
8.1 大白話說java并發(fā)工具類-CountDownLatch,CyclicBarrier
知識點(diǎn):(1)倒計(jì)時(shí)器CountDownLatch;(2)循環(huán)柵欄CyclicBarrier;(3)CountDownLatch與CyclicBarrier的比較
8.2 大白話說java并發(fā)工具類-Semaphore,Exchanger
知識點(diǎn):(1)資源訪問控制Semaphore;(2)數(shù)據(jù)交換Exchanger
-
并發(fā)實(shí)踐
JAVA并發(fā)知識圖譜
可移動到新窗口,放大查看效果更好或者查看原圖
