閱讀782 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java並發編程開發筆記——1簡言

線程
風險:Java對線程的支持其實是一把雙刃劍。
安全性問題:線程安全性可能是非常複雜的,在沒有充足同步的情況下,多個線程的操作執行順序是不可預測的,甚至會產生奇怪的結果。
_
@NotThreadSafe是一個自定義標注,用於說明類和類成員的並發屬性。(其他標注包括@ThreadSafe和@Immutable)。如果用@ThreadSafe來標注某個類,那麼開發人員可以放心地在多線程環境下使用這個類,維護人員也會發現它能保證線程安全性,而軟件分析工具還可以識別出潛在的編碼錯誤。
在UnsafeSequence類中說明的是一種常見的並發安全問題,稱為竟態條件(Race Condition)。在多線程環境下,getValue是否會返回唯一的值,要取決於運行時對線程中操作的交替執行方式,這並不是我們希望看到的情況。
由於多個線程要共享相同的內存地址空間,並且是並發運行,因此它們可能會訪問或修改其他線程正在使用的變量。
通過將getNext修改為一個同步方法,可以修複UnsafeSequeance中的錯誤。

_

活躍性問題
_

線程問題
_

最後更新:2017-06-23 23:34:47

  上一篇:go  YunOS場景文字識別
  下一篇:go  《深入理解Elasticsearch(原書第2版)》一2.1.1 何時文檔被匹配上