java併發程式設計實戰 簡介

2021-08-16 04:13:51 字數 477 閱讀 9093

1、併發和並行的區別

併發:多個程式在同一時間段執行,只有乙個cpu。

並行:多個程式在同一時刻執行,有多個cpu。

2、執行緒帶來的風險

(1)安全性問題:「永遠不發生糟糕的事情」,兩個或多個執行緒同時訪問乙個變數,可能會出現差錯。例如,兩個執行緒同時對乙個變數執行讀操作,從而它們得到了相同的值,違背了該變數值唯一的條件。

(2)活躍性問題:「某件正確的事情最終會發生」。當某個操作無法執行下去的時候,就會發生活躍性問題。例如,執行緒a在等待執行緒b釋放其持有的資源,而執行緒b永遠都不釋放該資,那麼a就會永遠的等待下去。死鎖、飢餓和活鎖都是活躍性問題。

(3)效能問題:

單執行緒程式效能問題:服務時間過長、響應不靈敏、吞吐率過低、資源消耗過高、可伸縮性較低。

3、執行緒的優勢

(1)發揮多處理器的強大能力

(2)建模的簡單性

(3)非同步事件的簡化處理

(4)響應更靈敏的使用者介面

Java 併發程式設計實戰筆記(一)簡介

執行緒的風險 執行緒的一些應用 為什麼要編寫併發程式 使用多執行緒 簡化非同步 簡化複雜系統的開發。充分發揮多處理器的強大計算能力。優勢 直觀且簡單 提高資源利用率 公平性 便利性 發揮多處理的強大能力 建模的簡單些 非同步事件簡化處理 響應更靈敏的使用者介面 如果沒有同步,共享變數引起的讀操作等安...

Java併發程式設計實戰筆記 1 執行緒安全簡介

資源利用率 程式在等待操作執行完成的空檔,執行另乙個程式 提高資源利用率。公平性使用者對於計算機的使用權,通過粗粒度的時間分片 使得使用者和程式共享資源程式。便利 效率性 乙個任務分解多個子任務,必要時通訊共同完成任務。非同步事件的簡單處理 對於單執行緒而言,如果要高效處理多個操作,必須使用非阻塞i...

Java併發程式設計實戰 總結

1.可變狀態是至關重要的。所有的併發問題都可以歸結為如何協調對併發狀態的訪問,可變狀態越少,就越容易確保執行緒安全性。2.盡量將域宣告為final型別,除非需要它們是可變的。3.不可變物件一定是執行緒安全的。不可變物件能極大地降低併發程式設計的複雜性。它們更為簡單而且安全,可以任意共享而無須使用加鎖...