1線程通信
1讓多個(gè)線程之間可以互相影響悠汽,多個(gè)線程共用的空間
2我們可以控制線程的等待和喚醒咨油,wait()notify()notifyAll()
3這幾個(gè)方法都必須用在鎖的范圍內(nèi),只對(duì)同步代碼塊有用
4當(dāng)有多個(gè)線程處于等待狀態(tài)時(shí)殉了,notify只能隨機(jī)喚醒一個(gè)
5鎖只能喚醒被自己等待的線程
2ThreadLocal
線程本地變量
可以存儲(chǔ)一個(gè)值并思,線程是隔離的當(dāng)前線程存放的值其他線程無法獲取
底層源來:一個(gè)以線程唯一標(biāo)識(shí)為Key的map集合
3互斥鎖
synchronize的升級(jí)版本档冬,提供更加豐富的方法
目前給我們的只體現(xiàn):一個(gè)鎖可以有多個(gè)Condition用來等待喚醒不同的線程
比synchronize功能更加豐富,但是相對(duì)的代碼的復(fù)雜度也有所提升
4線程的狀態(tài)
新建 線程的出生創(chuàng)建Thread對(duì)象
就緒 線程可以執(zhí)行薪夕,但沒有獲取到Cpu的執(zhí)行權(quán)
運(yùn)行 線程正在運(yùn)行狀態(tài)
休眠 線程處于停止?fàn)顟B(tài)释移,可以自動(dòng)醒來不會(huì)釋放鎖
等待狀態(tài) 線程陷入永久的等待(也可以只等待一段時(shí)間)釋放鎖,需要外力才能喚醒
鎖池狀態(tài) 等待中的線程被喚醒就會(huì)進(jìn)入鎖池狀態(tài)寥殖,此時(shí)具有獲取鎖的資格玩讳,在獲取鎖之前不能運(yùn)行
消亡 線程運(yùn)行完畢,結(jié)束程序
5線程池
在初始化的時(shí)候先創(chuàng)建一批線程存儲(chǔ)起來嚼贡,等使用的時(shí)候直接從容器中獲取
優(yōu)點(diǎn)使用時(shí)節(jié)約了創(chuàng)建線程的時(shí)間熏纯,(線程的創(chuàng)建時(shí)間遠(yuǎn)遠(yuǎn)大于一般的對(duì)象)
線程池有多種,每種線程池都有特點(diǎn)
6線程組
多個(gè)線程進(jìn)行分組管理便于操作
7Runtime 和Timer
Runtime 幫助我們運(yùn)行操作系統(tǒng)的底層命令
Timer 計(jì)時(shí)器和定時(shí)器