12.1 進程與線程
4種狀態:新建、運行、中斷和死亡。? ?(新建、運行、中斷和死亡)
建立線程的兩種方法:用Thread類或其子類。
線程新建后,必須調用 start () 方法使其進入就緒隊列,才有機會獲得 CPU 資源,不調用 start () 方法無法獲得 CPU 資源
中斷的4種原因:(1)JVM將CPU資源從當前線程切換給其他線程,使本線程讓出CPU的使用權處于中斷狀態。(2)線程使用CPU資源期間,執行了sleep(int millsecond)方法,使當前線程進入休眠狀態。(3)線程使用CPU資源期間,執行了wait()方法,使得當前線程進入等待狀態。(4)線程使用CPU資源期間,執行某個操作進入阻塞狀態,比如執行讀/寫操作引起阻塞。
死亡狀態,不能再調用start()方法。run () 方法執行完意味著線程任務已完成,進入死亡狀態,處于死亡狀態的線程生命周期結束,無法再啟動
isAlive () 方法用于判斷線程是否存活,當線程執行完 run () 方法或者因異常終止,即進入死亡狀態,此時該方法返回 false
一個線程的 run () 方法通常只執行一次,不能多次啟動
12.2 Java中的線程
設置線程的兩種方法:用Thread類或其子類。
在 Java 中,使用 setPrority(int grade)方法,默認情況下所有線程優先級是 5 級
多線程:Java使我們可以創建多個線程,在處理多線程問題時,我們必須注意這樣一個問題:當兩個或多個線程同時訪問同一個變量,并且一個線程需要修改這個變量。我們應對這樣的問題作出處理,否則可能發生混亂。
當一個線程使用的同步方法中用到某個變量,而此變量又需要其它線程修改后才能符合本線程的需要,那么可以在同步方法中使用wait()方法。使用wait方法可以中斷方法的執行,使本線程等待,暫時讓出CPU的使用權,并允許其它線程使用這個同步方法。其它線程如果在使用這個同步方法時不需要等待,那么它使用完這個同步方法的同時,應當用notifyAll()方法通知所有的由于使用這個同步方法而處于等待的線程結束等待。
當一個線程使用的同步方法中用到某個變量,而此變量又需要其它線程修改后才能符合本線程的需要,那么可以在同步方法中使用wait()方法。使用wait方法可以中斷方法的執行,使本線程等待,暫時讓出CPU的使用權,并允許其它線程使用這個同步方法。其它線程如果在使用這個同步方法時不需要等待,那么它使用完這個同步方法的同時,應當用notifyAll()方法通知所有的由于使用這個同步方法而處于等待的線程結束等待。
12.3 Thread類與線程的創建
12.4 線程的常用方法
12.5 線程同步
同步方法同一時刻只能被一個線程訪問,其他線程需等待