線程
cpu執行的最小單位,進程的實際運作單位,程序在執行的時候,都是以線程爲單位來執行
與進程的區別
進程是操作系統分配資源和調度的基本單位;一個進程可能包含多個線程;線程之間切換的代價比進程要小。
多線程的優勢
提高cpu利用率,在單線程中,如果該線程在進行io操作時,這時cpu是空閒的;如果是多線程中,在cpu空閒的時候可以分配該其他線程使用,這樣提高了cpu利用率
多線程的問題
安全性問題,如果有多個線程同時修改某個變量,沒有同步控制,容易造成互相覆蓋結果,使得最終的結果不正確。
死鎖問題,由於線程推進不當造成線程由於沒有獲得需要的鎖而造成線程都不執行(死鎖的必要條件:資源互斥,資源不可剝奪,
循環等待,請求與保存)
Java線程創建
基礎Thread或者實現Runnable接口可以創建新的線程
線程狀態
開始:通過Thread.start創建線程
就緒:線程創建成功後,可以運行的狀態
運行:線程執行
阻塞:在執行的過程中,由於沒有獲得需要的鎖或者cpu分配的時間片到用完了,不在執行,等待鎖貨cpu時間片的狀態
結束:線程正常結束或由於異常原因退出