踩坑--Java從緩存中直接引用集合,報ConcurrentModificationException異常

1、背景

該異常出現的原因是集合的參數發生了變更,一般是因爲集合的長度發生了變化,大量出現在某天晚上的壓測中。

2、原因

因爲我在寫新版功能的時候,我就將某個list直接從本地緩存的兜底中讀取,沒有new一個新的list,只是簡單的引用。

開始以爲這種操作沒問題,因爲也只對這個集合進行了讀操作。但是沒想到,對list進行分割的操作,也有可能會導致ConcurrentModificationException異常。

當本地緩存的定時任務更新了這個list時,而此時我又在對這個list進行分割操作,於是在高併發場景下大量報了ConcurrentModificationException。

3、解決方案

在從本地緩存中讀取整個集合的數據時,最好要new一個本地對象來存儲數據,不然很容易發送異常。

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