多工處理有兩種型別:
1
2
建立和啟動執行緒:
1、實現方式1 : 繼承thread類,並重寫run方法,在run方法中寫入要執行的**
需呼叫start方法啟動執行緒,由start方法呼叫run方法,如果直接呼叫run方法則沒有
開啟執行緒
2、實現方式2 : 實現runnable介面,重寫run方法,在run方法中寫入要執行的**
執行緒狀態:
一、新建 ----new thread
二、就緒 ----呼叫start(),在start()呼叫run()之前
三、執行 ----run()執行期間
四、中斷 ----在run()執行期間,該執行緒沒有被cpu執行的時間
中斷原因:
1、沒有搶到cpu
2、阻塞
3、休眠 thread.sleep(休眠的毫秒數);
4、等待—喚醒 wait()等待,notify()喚醒,notifyall()喚醒所有
5、掛起 yield();
注意:1、中斷結束之後執行緒會去搶奪cpu,如果沒搶到則繼續中斷
2、預設情況下,所有執行緒優先順序一樣
thread類的setpriority()可以設定執行緒優先順序,預設值都為5,最高10級,最低1級,優先順序高則代表被cpu選中的機率高,不一定都是先執行的
五、死亡 ----run()執行結束之後,**資源
執行緒安全性:
執行緒同步:關鍵字synchronized
1、同步方法:一次只能被乙個執行緒使用,該執行緒沒有執行完,其他執行緒只能等待。
在資源類的方法中加關鍵字synchronized
2、同步塊:
死鎖:
當兩個執行緒迴圈依賴於一對同步物件時將發生死鎖。
執行緒間通訊:
wait();
notify();
多執行緒程式設計
1 多執行緒的基本思路不是在介面執行緒執行費時的 而是專門啟動乙個執行緒 稱作工作執行緒 來完成,介面執行緒只負責介面的 顯示 和操作,而工作執行緒只負責耗時的操作過程。2 對於普通的win32應用程式來說,執行緒可以分為兩種 介面 ui user inte ce 執行緒和工作執行緒。介面執行緒一般...
多執行緒程式設計
如何編寫執行緒安全的dll 在我的工作中經常會編寫dll,這些dll有個共同的特點就是都有乙個初始化函式,乙個資源釋放函式,其他幾個函式都是核心功能函式。而且這些dll有時會被多個程序同時呼叫,這就牽扯到多程序的多執行緒呼叫dll的問題。有點繞口,以下我根據我實踐中遇到的問題,分四種情況分享一下我解...
多執行緒程式設計
1 執行緒的狀態 建立狀態 準備好了乙個多執行緒的物件 就緒狀態 呼叫了start 方法,等待cpu進行排程 執行狀態 執行run 方法 阻塞狀態 暫時停止執行,可能將資源交給其他執行緒使用 終止狀態 死亡狀態 執行緒銷毀 2 執行緒的常用方法 thread類 取得執行緒名稱 getname thr...