1. 多線程概念:
線程是指進(jìn)程中的一個(gè)執(zhí)行流程,一個(gè)進(jìn)程中可以運(yùn)行多個(gè)線程。比如java.exe進(jìn)程中可以運(yùn)行很多線程。線程總是屬于某個(gè)進(jìn)程,進(jìn)程中的多個(gè)線程共享進(jìn)程的內(nèi)存。
- 多線程的實(shí)現(xiàn)方式和啟動(dòng)
- 多線程是依靠什么方式解決資源競(jìng)爭(zhēng)
- 多線程的各種狀態(tài)以及優(yōu)先級(jí)
- 多線程的暫停方式
2. 多線程詳解 1)多線程的實(shí)現(xiàn)方式和啟動(dòng):- 繼承Thread和是實(shí)現(xiàn)Runnable接口,重寫(xiě)run方法
- 啟動(dòng)只有一種方式:通過(guò)start方法,虛擬機(jī)會(huì)調(diào)用run方法
2) 多線程依靠什么解決資源競(jìng)爭(zhēng)- 鎖機(jī)制:分為對(duì)象鎖和類鎖,在多個(gè)線程調(diào)用的情況,每個(gè)對(duì)象鎖都是唯一的,只有獲取了鎖才能調(diào)用synchronized方法
- synchronize同步:分為同步方法和同步方法塊
- 什么時(shí)候獲取鎖:每次調(diào)用到synchronize方法,這個(gè)時(shí)候去獲取鎖資源,如果線程獲取到鎖則別的線程只有等到同步方法介紹后,釋放鎖后,別的線程 才能繼續(xù)使用
3)線程的幾種狀態(tài)- 主要分為:新?tīng)顟B(tài)(還沒(méi)有調(diào)用start方法),可執(zhí)行狀態(tài)(調(diào)用start方法),阻塞狀態(tài),死亡狀態(tài)
默認(rèn)優(yōu)先級(jí)為normal(5),優(yōu)先級(jí)數(shù)值在1-10之間
4) 多線程的暫停方式- sleep:睡眠單位為毫秒
- wait,waitAll,notify,notifyAll,wait等待,只有通過(guò)wait或者waitAll喚醒
- yield:cpu暫時(shí)停用
- join