多執行緒程式設計

2021-07-11 15:17:41 字數 1052 閱讀 9135

特點:基於執行緒的多工處理環境中,執行緒是最小的處理單位。宣告乙個thread類的子類,覆蓋run()方法

實現:直接new出子類物件,呼叫start方法即可

class mythread extends thread實現runnable介面,重寫run方法

new出thread物件,傳入實現類物件,呼叫thread物件的start()方法;

新建狀態:

new出thead物件,呼叫start方法
就緒狀態:
執行start方法之後,執行run方法之前
執行run方法
中斷狀態:執行run方法可能出現的狀態

造成中斷的原因:

1.由於優先順序的關係,執行緒沒有搶到cpu被執行;(優先順序最小為1,最大優先順序為10級,

預設為5級)this.setpriority(10);設定優先順序 也就是被執行機率更高

不代表一定被先執行

2.使用sleep()方法使執行緒休眠;休眠時間結束以後重新參與cpu競爭

3.阻塞(i/o事件)比如scanner等待輸入時 就是阻塞;

4.wait-notify機制(執行緒間的通訊機制)

wait()

5.掛起機制 呼叫yield()方法 執行緒已顯示出讓cpu控制權 (強制其它執行緒退出)

死亡狀態:
清理資源,**分配空間
如果多個執行緒訪問同一資源物件,有可能會造成該資源物件資料混亂;
使用同步的方式解決;(鎖機制)

使用synchronized關鍵字(同步)

1.在資源身上使用同步關鍵字;--同步方法

public synchronized void classname()

public void run(rs)

}3.有可能造成死鎖:

stringbuffer:執行緒安全,可變

stringbuilder:執行緒不安全,可變

使用wait-notify機制解決此問題

多執行緒程式設計

1 多執行緒的基本思路不是在介面執行緒執行費時的 而是專門啟動乙個執行緒 稱作工作執行緒 來完成,介面執行緒只負責介面的 顯示 和操作,而工作執行緒只負責耗時的操作過程。2 對於普通的win32應用程式來說,執行緒可以分為兩種 介面 ui user inte ce 執行緒和工作執行緒。介面執行緒一般...

多執行緒程式設計

如何編寫執行緒安全的dll 在我的工作中經常會編寫dll,這些dll有個共同的特點就是都有乙個初始化函式,乙個資源釋放函式,其他幾個函式都是核心功能函式。而且這些dll有時會被多個程序同時呼叫,這就牽扯到多程序的多執行緒呼叫dll的問題。有點繞口,以下我根據我實踐中遇到的問題,分四種情況分享一下我解...

多執行緒程式設計

1 執行緒的狀態 建立狀態 準備好了乙個多執行緒的物件 就緒狀態 呼叫了start 方法,等待cpu進行排程 執行狀態 執行run 方法 阻塞狀態 暫時停止執行,可能將資源交給其他執行緒使用 終止狀態 死亡狀態 執行緒銷毀 2 執行緒的常用方法 thread類 取得執行緒名稱 getname thr...