感受本身JAVA基礎太差了,又一次看一遍,已思惟導圖的方式記錄下來瀏覽器
多線程0基礎
多線程

進程
獨立性
擁有獨立資源
獨立的地址
無受權其它進程沒法訪問
動態性
與程序的差異是:進程是動態的指令集合,而程序是靜態的指令集合
增長時間概念
有本身的生命週期和不一樣的狀態
併發性
多個進程可以在單核處理器併發運行
多個進程互不影響
和並行的差異:並行是同一時刻多個進程在多個處理器上同一時候運行
而併發是指在同一時刻僅僅能運行一條指令,但互相切換迅速,宏觀上看是運行多個指令
線程
線程相對於進程如同進程相對於操做系統
多個線程共享同一進程的資源
輕量級進程
性能高,建立easy
應用:一個瀏覽器同一時候下載多個圖片、一個server同一時候處理多個請求
JAVA多線程
建立
繼承Thread
實現Runnable接口(推薦)
生命週期
新建
new 一個Thread
就緒
運行start方法
執行
開始運行run方法
堵塞
進入堵塞
調用sleep方法主動放棄處理器資源
想得到一個同步檢測器,但改同步檢測器被其它資源所佔有
調用一個堵塞式的IO方法,在該方法返回前,線程堵塞
等待某個notify通知
調用suspend掛起
解除堵塞
調用sleep超過指定時間
調用堵塞式IO方法已返回
成功得到了試圖要獲得的同步檢測器
等待某個通知時,其它線程發出了通知
處於掛起的線程調用了resume方法
死亡
run方法結束
程序拋出一個未捕獲的異常
調用stop方法