Java併發程式設計(二)優勢和風險

2021-09-20 02:17:18 字數 362 閱讀 7967

一、優勢

併發程式設計之所以讓人迷惑是因為有不止一種問題的解決需要使用併發,也有不止一種方法去實現併發,而且他們之間也沒有清晰的對映。

使用併發程式設計來解決的問題可以劃分為兩類,即「speed」和「designmanageability」。

速度優勢:

設計上的優勢:

二、風險

安全性問題

主要是多個執行緒共享資料時可能會產生於期望不相符的結果

活躍性問題(liveness)

效能問題

a. 執行緒過多時會使得cpu頻繁切換,花在排程上時間太多。

b. 多執行緒環境必須使用同步機制,導致很多編譯器想做的優化被抑制。

c. 執行緒過多還會消耗過多記憶體。

JAVA併發程式設計(二)

一.可見性 讀操作能實時的看到寫操作最新寫入的值。在單執行緒中,讀操作總能得到寫操作寫入的值 但在多執行緒中,如果讀操作跟寫操作在不同的執行緒中執行,那麼讀操作將不一定能適時的看到其他執行緒寫入的值。二.重排序 在沒有使用同步的情況下,編譯器 處理器 執行時都有可能做操作的執行順序進行一些調整。三....

Java併發程式設計(二)之併發程式設計挑戰篇

在進行併發程式設計開發時,會面臨一些挑戰,主要包括三個方面 上下文切換 死鎖 資源限制 挑戰一 上下文切換的挑戰 上下文切換 單個cpu同乙個時刻只能執行一條執行緒,作業系統會給每條執行緒分配時間片來對執行緒進行排程操作,執行緒在得到的時間片內占用cpu資源處理自身資料,當作業系統從乙個執行緒切換到...

JAVA併發程式設計

通過常量字串 string 來呼叫 wait 或 notify 方法所導致的問題是,jvm 編譯器會在內部自動將內容相同的 string 轉變為相同的物件。這意味著,即便你建立了兩個不同的 mywaitnotify 例項,他們內部的 mymonitorobject 變數也會指向相同的 string ...