如何保證ArrayList執行緒安全

2021-07-29 22:30:09 字數 541 閱讀 5057

一、繼承arraylist,然後重寫或按需求編寫自己的方法,這些方法要寫成synchronized,在這些synchronized的方法中呼叫arraylist的方法。

二:使用collections.synchronizedlist();使用方法如下:

假如你建立的**如下:list> data=new arraylist>();

那麼為了解決這個執行緒安全問題你可以這麼使用collections.synchronizedlist(),如:

list> data=collections.synchronizedlist(new arraylist>());

其他的都沒變,使用的方法也幾乎與arraylist一樣,大家可以參考下api文件;

額外說下 arraylist與linkedlist;這兩個都是介面list下的乙個實現,用法都一樣,但用的場所的有點不同,arraylist適合於進行大量的隨機訪問的情況下使用,linkedlist適合在表中進行插入、刪除時使用,二者都是非執行緒安全,解決方法同上(為了避免執行緒安全,以上採取的方法,特別是第二種,其實是非常損耗效能的)。

如何保證ArrayList執行緒安全

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

ArrayList 保證多執行緒安全

一 使用synchronized關鍵字 二 使用collections.synchronizedlist 使用方法如下 假如你建立的 如下 list data new arraylist 那麼為了解決這個執行緒安全問題你可以這麼使用collections.synchronizedlist 如 lis...

如何保證執行緒安全?

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