多執行緒大家在初學的時候,對這個知識點應該有不少的疑惑的。我認為主要原因有兩個:
- 多執行緒在初學的時候不太好學,並且一般寫專案的時候也很少用得上(至少在初學階段時寫的專案基本不需要自己建立執行緒)。
- 多執行緒的知識點在面試經常考,多執行緒所涉及的知識點非常多,難度也不低。
這就會給人帶來一種感覺「這破玩意涉及的東西是真的廣,平時也不怎麼用,怎麼面試就偏偏愛問這個鬼東西」
不多BB,我要開始了。
多執行緒知識重要嗎?
我們日常「關於多執行緒的程式碼」寫得不多,但是我們寫的程式程式碼的的確確是在多執行緒的環境下跑的。
如果我們不懂多執行緒知識,很直接的一個現實:
從開頭的思維導圖裡我們可以發現多執行緒的知識點還是很多的,我們起碼得知道:
- 執行緒和程序的區別
- Thead類的常見方法
- 可以用什麼手段來解決執行緒安全性問題
- Synchronized和Lock鎖的區別
- 什麼是AQS、ReentrantLock和ReentrantReadWriteLock鎖
- JDK自帶的執行緒池有哪幾個,執行緒池的構造方法重要的引數
- 什麼是死鎖,怎麼避免死鎖
- CountDownLatch、CyclicBarrier、Semaphore是什麼?
- Atomic包下的常見子類,什麼是CAS,CAS會有什麼問題
- ThreadLocal是什麼?
- …..//
雖然在工作中未必會全部用得上,但如果專案真的用到了,我們如果學過了可能就可以很快地理解當時為什麼要這樣設計(我覺得去挖掘過程還是挺有意思的)。
「我可能不用,但你必須要有」
這個道理也很容易懂:「我買電腦的時候,雖然我是木耳聽不出什麼音質出來,但你音質就是得好」。企業招人的時候也一樣「你在工作的時候未必要寫,但你必須要會」
至少在我看來,從求職的角度出發,多執行緒是很重要的。之前我還整理過在我當時校招經常被問到的多執行緒面試題目:
- 多執行緒瞭解多少啊?使用多執行緒會有什麼問題?你是怎麼理解「執行緒安全」的?
- 如果我現在想要某個操作等待執行緒結束之後才執行,有什麼方法可以實現?為什麼要用CountDownLatch?CountDownLatch的底層是什麼?(引出AQS)
- synchronized關鍵字來說一下,它的用途是什麼?synchronized底層的原理是什麼?
- 執行緒安全的容器有哪些?(著重於ConcurrentHashMap、CopyWriteOnArrayList與其他非執行緒安全容器的區別以及它們的具體實現)
- ThreadLocal你瞭解過嗎?主要是用來幹什麼的?具體的原始碼實現原理來說一下吧
- 產生死鎖的條件是什麼?我們可以如何避免死鎖?(可延伸到作業系統層面上的死鎖)
- synchronized鎖和ReentrantLock鎖有什麼區別呀?
- 執行緒池你應該也看過吧,來說說為什麼要用執行緒池。JDK預設實現了幾個執行緒池,分別有xxx(自然地ThreadPoolExecutor建構函式的常用幾個引數你也得一起說出來)
- …
轉發+關注,然後新增VX(tkzl6666) 即可獲得《Java多執行緒知識點總結》PDF檔案資料的免費領取方式!
一、什麼是多執行緒
初識多執行緒
- 1.1介紹程序
- 1.2回到執行緒
- 1.3程序與執行緒
- 1.4並行與並行
- 1.5Java實現多執行緒
- 1.6Java實現多執行緒需要注意的細節
二、Thread類解析
Thread執行緒類API
- 1.2守護執行緒
- 1.3優先順序執行緒
- 1.4執行緒生命週期
三、使用多執行緒需要注意的問題
- 1、使用多執行緒遇到的問題
- 2、物件的釋出與逸出
- 3、解決多執行緒遇到的問題
- 4、多執行緒需要注意的事 -總結
四、synchronized鎖和lock鎖
- 1、synchronized鎖
- 2、Lock顯式鎖
- 3、Java鎖簡單總結
五、AQS
六、ReentrantLock和ReentrantReadWriteLock
- 1、ReentrantLock鎖
- 2、ReentrantReadWriteLock
- 3、最後
七、執行緒池
- 1、執行緒池簡介
- 2、JDK提供的執行緒池API
- 3、ThreadPoolExecutor詳解
- 4、execute執行方法
- 5、執行緒池關閉
八、死鎖
九、執行緒常用的工具類
- 1、CountDownLatch
- 2、CyclicBarrier
- 3、Semaphore
- 4、總結
十、Atomic
十一、ThreadLocal
- 1、什麼是ThreadLocal
- 2、為什麼要學習ThreadLocal?
- 3、ThreadLocal實現的原理
- 4、避免記憶體洩露
- 5、總結
放乾貨
PDF的內容非常非常長,乾貨非常非常的硬,有興趣的讀者可以瀏覽一波。共有「129」頁
轉發+關注,然後新增VX(tkzl6666)即可獲得《Java多執行緒知識點總結》PDF檔案資料的免費領取方式!