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