解決執行緒同步的三種方法

2021-07-30 21:04:11 字數 911 閱讀 1203

**- 引言

當多個執行緒同時對同乙個物件的例項變數進行操作時,會引起執行緒的同步問題。此時會引起執行緒不安全,**總結起來是三點因素:

1.多執行緒

2.同一物件

3.屬性(例項變數)

怎麼解決這種問題?**

1.方法加鎖(使用synchronized關鍵字)

public synchronized void

getmoney(string name,int money) else

}

但是這種方法有缺陷的,如果可能會出現執行緒不安全的地方就一小塊,而這個方法在這個可能出現執行緒不安全的地方之前有很多**,那麼每次需要這個方法解決問題的時候都需要執行之前的那**,就顯得效率低下

2.同步**塊

同步**塊僅僅同步了會發生執行緒安全的**,比同步整個方法效能高。

public

void

getmoney(string name,int money) else

}}

3.使用reentrantlock類

上述的兩種方法如果在執行中產生了異常,那麼都可能發生「」死鎖「」的問題,那麼還有一種reentrantlock類可以解決死鎖的問題。就像下邊這樣了:

private reentrantlock reentrantlock = new reentrantlock();

public

void

getmoney(string name,int money) else

} catch(exception e) finally

}

多執行緒在網際網路開發中尤其重要,以後要多注意學習!

Linux 執行緒同步的三種方法

執行緒的最大特點是資源的共享性,但資源共享中的同步問題是多執行緒程式設計的難點。linux下提供了多種方式來處理執行緒同步,最常用的是互斥鎖 條件變數和訊號量。通過鎖機制實現執行緒間的同步。初始化鎖。在linux下,執行緒的互斥量資料型別是pthread mutex t。在使用前,要對它進行初始化。...

Linux 執行緒同步的三種方法

執行緒的最大特點是資源的共享性,但資源共享中的同步問題是多執行緒程式設計的難點。linux下提供了多種方式來處理執行緒同步,最常用的是互斥鎖 條件變數和訊號量。通過鎖機制實現執行緒間的同步。初始化鎖。在linux下,執行緒的互斥量資料型別是pthread mutex t。在使用前,要對它進行初始化。...

獲取執行緒控制代碼的三種方法

獲取執行緒控制代碼的三種方法 1.通過程序的pid並呼叫api函式 handle openprocess dword dwdesiredaccess,access flag bool binherithandle,handle inheritance option dword dwprocessid...