多線程知識點概述

前言
從今天開始,我們再次學(xué)習(xí)多線程的相關(guān)知識點,這一次的目的是希望能夠更詳細地梳理多線程相關(guān)知識,為日常開發(fā)找出更好的實踐方向,本次關(guān)心的核心點有兩個,一個是線程安全方面的內(nèi)容,包括鎖、原子類、CASC等,另一個是工具類相關(guān)的,包括線程池已經(jīng)juc下面其他工具類。
今天我們主要是梳理多線程這塊的技術(shù)點,為后續(xù)進階學(xué)習(xí)做準備,好了,下面我們直接開始吧!
多線程
線程
首先是線程的基本知識,包括線程的基本概念、線程創(chuàng)建的方式、線程的狀態(tài)等內(nèi)容,同時,在這塊我們會了解線程的常用方法,并顯示各個方法的運行效果。

線程池
線程池這塊主要是線程池的創(chuàng)建和使用。創(chuàng)建這塊要熟悉線程池的構(gòu)造參數(shù),清楚各個參數(shù)的作用和具體用法;使用這塊要清楚線程池的任務(wù)提交方式、拒絕策略等

常用組件
關(guān)鍵字
雖然synchronized關(guān)鍵字算是java的老關(guān)鍵字了,但是我還是不能恰到好處地使用這個關(guān)鍵字,所以這一次我會盡可能詳細地探索synchronize和volatile的應(yīng)用場景,找到更合理地應(yīng)用場景
synchronizedvolatilefinal
volatile僅能實現(xiàn)變量的修改可見性,不能保證原子性;而synchronized則可以保證變量的修改可見性和原子性

原子類
原子類主要包括三塊內(nèi)容,一種是基本類型的原子類,比如boolean的、integer的、Long的,一種是這三種基本類型的數(shù)組,最后一種是引用類型的原子類。
另外還包括其他原子操作的組件,比如Accumulator、Adder和FieldUpdater,不過這些實際開發(fā)中基本上用不到。

鎖
關(guān)于鎖這塊的內(nèi)容,我們前面其實也講過了,但當時只是簡單剖析了讀寫鎖和可重入鎖,也都比較簡單,這一次我希望能夠更全面地了解java多線程的鎖,所以會盡可能多探討一些。
可重入鎖 讀寫鎖 StampedLockCondition
常用組件
這一塊主要包括多線程的常用組件,這里的內(nèi)容除了LockSupport,其他的都分享過了,不過這一次我們還需要再次回顧下,既是回顧,也是為了查漏補缺、

其他組件
這一塊的內(nèi)容在上次學(xué)習(xí)的時候基本上沒咋涉及到,所以這次應(yīng)該會多分享一些。
Unsafe隊列 Fork-Join方案TimeUnit
結(jié)語
好了,以上就是我們本次重學(xué)java多線程的內(nèi)容概要,從明天開始我就開始按照上面的內(nèi)容進行更新學(xué)習(xí),希望能夠通過這一次的學(xué)習(xí)和梳理,對多線程有更深入的認知,同時也希望這個過程可以幫到各位小伙伴。
需要完整資料的小伙伴,可以在公眾號后臺回復(fù)【多線程】獲取相關(guān)腦圖,好了,大家晚安吧!
- END -