《java併發編程實戰》讀書筆記

線程安全:

當多個線程訪問某個類時,這個類始終能表現出正確的行爲,那麼就稱這個類是線程安全的。

什麼線程活躍性問題?

活躍性問題,意味着某個線程可能一直得不到執行。線程A一直等待線程B釋放其持有的資源,如果B不釋放,那麼A就一直等下去。例如死鎖,飢餓,活鎖等都是。

多線程性能問題:

線程切換會導致上下文切換,頻繁上下文切換會帶來極大的開銷。當線程共享數據時,使用同步機制,會抑制某些編譯器優化,使內存緩衝區的數據無效,以及增加共享內存總線的同步流量。

競態條件:

併發編程中,不恰當的執行時序而出現不正確的結果。例如先檢查後執行,某個文件不存在,然後創建文件,但是當你觀察這個結果到開始創建文件之間,觀察的結果可能變得無效。

如何解決線程安全問題:

1不在線程之間共享該狀態變量(單線程訪問)。

2將狀態變量修改成不可變對象。

3在訪問狀態變量的時候使用同步機制。

鎖的重入:

線程嘗試獲得一個自己已經持有的鎖,那麼這個請求會成功。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章