線程安全:
當多個線程訪問某個類時,這個類始終能表現出正確的行爲,那麼就稱這個類是線程安全的。
什麼線程活躍性問題?
活躍性問題,意味着某個線程可能一直得不到執行。線程A一直等待線程B釋放其持有的資源,如果B不釋放,那麼A就一直等下去。例如死鎖,飢餓,活鎖等都是。
多線程性能問題:
線程切換會導致上下文切換,頻繁上下文切換會帶來極大的開銷。當線程共享數據時,使用同步機制,會抑制某些編譯器優化,使內存緩衝區的數據無效,以及增加共享內存總線的同步流量。
競態條件:
併發編程中,不恰當的執行時序而出現不正確的結果。例如先檢查後執行,某個文件不存在,然後創建文件,但是當你觀察這個結果到開始創建文件之間,觀察的結果可能變得無效。
如何解決線程安全問題:
1不在線程之間共享該狀態變量(單線程訪問)。
2將狀態變量修改成不可變對象。
3在訪問狀態變量的時候使用同步機制。
鎖的重入:
線程嘗試獲得一個自己已經持有的鎖,那麼這個請求會成功。