線程與進程 1.線程:程式中單獨順序的控制流 線程本身是通過程式進行運行 線程是程式中的順序控制流,只能使用分配給程式的資源與環境 2.進程:執行中的程式 一個進程可以包含一個或多個線程 一個進程至少要包含一個線程 3.單線程:程式中只存在一個線程,實際上主方法就是一個線程 4.多線程:多線程是一個 ...
線程與進程
1.線程:程式中單獨順序的控制流
線程本身是通過程式進行運行
線程是程式中的順序控制流,只能使用分配給程式的資源與環境
2.進程:執行中的程式
一個進程可以包含一個或多個線程
一個進程至少要包含一個線程
3.單線程:程式中只存在一個線程,實際上主方法就是一個線程
4.多線程:多線程是一個程式中執行多個任務
多線程目的是更好地使用CPU資源
線程的實現
1.繼承Thread類
2.實現Runnable介面
Thread類在java。lang包中定義,繼承Thread必須重寫run()
Runnable介面最後還是要調用Thread執行
線程的狀態
創建狀態:準備好了一個多線程對象
就緒狀態:調用start(),等待CPU進行調度
運行狀態:執行run()
阻塞狀態:暫停執行,可能將資源交給其他線程使用
終止狀態(死亡狀態):線程銷毀
常用方法:
取得線程名稱:getName()
取得當前線程對象:currentThread() ----->currentThread().getName 獲取當前線程名稱
判斷線程是否啟動:isAlive()
線程強制運行:join()
線程休眠:sleep()
線程禮讓:yield() 執行到指定條件(比如說大於10),暫停當前線程,讓其他線程執行
中斷線程:interrupt()
線程暫停:wait()
喚醒線程:notify() notifyAll()
線程優先順序:
xxxxxx.setPriority(你想要設置的優先順序)
優先順序範圍是1~10,越大越優先(更可能最先執行,不是一定最先執行),預設為5
MAX_PRIORITY 10
MIN_PRIORITY 1
NORM_PRIORITY 5
生命周期:
線程池:
為什麼要用線程池???
假設伺服器完成一項任務所需時間為: 創建線程--T1
執行任務--T2
銷毀線程--T3
if(T1+T3)遠大於T2,建議使用線程池
線程池包括以下組成部分:
1.線程池管理器:用於創建並管理線程(創建、銷毀、添加新任務)
2.工作線程:線程池中的線程,在沒有任務時處於等待狀態,可以迴圈地執行任務
3.任務介面:每個人物必須實現的介面,以供工作現場調度執行任務,
主要規定了任務的入口,任務執行後的收尾工作,任務的執行狀態等...
4.任務隊列:用於存放沒有處理的任務,提供一種緩衝機制