如何保證Java執行緒安全

2021-07-23 14:38:31 字數 391 閱讀 2511

不要跨執行緒訪問共享變數

使共享變數是final型別的

使共享變數唯讀

將共享變數的操作加上同步

對於volatile宣告的數值型別變數進行運算, 往往是不安全的(volatile只能保證可見性,不能保證原子性)

使用普通同步容器(vector, hashtable)的迭代器, 需要外部鎖來保證其原子性。原因是普通同步容器產生的迭代器是非執行緒安全的。在併發程式設計中, 需要容器支援的時候, 優先考慮使用jdk併發容器

concurrenthashmap, copyonwritearraylist併發容器的迭代器,以及全範圍的size(), isempty() 都表現出弱一致性。他們只能標示容器當時的乙個資料狀態,無法完整響應容器之後的變化和修改。

如何保證執行緒安全?

執行緒安全 一般說來,確保執行緒安全的方法有這幾個 競爭與原子操作 同步與鎖 可重入 過度優化。競爭與原子操作 多個執行緒同時訪問和修改乙個資料,可能造成很嚴重的後果。出現嚴重後果的原因是很多操作被作業系統編譯為彙編 之後不止一條指令,因此在執行的時候可能執行了一半就被排程系統打斷了而去執行別的 了...

如何保證ArrayList執行緒安全

一 繼承arraylist,然後重寫或按需求編寫自己的方法,這些方法要寫成synchronized,在這些synchronized的方法中呼叫arraylist的方法。二 使用collections.synchronizedlist 使用方法如下 假如你建立的 如下 list data new ar...

如何保證ArrayList執行緒安全

一 繼承arraylist,然後重寫或按需求編寫自己的方法,這些方法要寫成synchronized,在這些synchronized的方法中呼叫arraylist的方法。二 使用collections.synchronizedlist 使用方法如下 假如你建立的 如下 list data new ar...