java - 多线程iterator修改ArrayList为何没有抛出ConcurrentModificationException异常?
迷茫
迷茫 2017-04-18 10:41:42
0
3
520
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(3)
左手右手慢动作

ArrayList本來就不是線程安全的,你可以用Collections.synchronizedList()回傳的List試試看

迷茫

本例中,分別測試 ArrayList 和 CopyOnWriteArrayList 這兩種情況。 ArrayList 會產生 fast-fail 事件,而 CopyOnWriteArrayList 不會產生 fast-fail 事件。

使用 ArrayList 時,會產生 fast-fail 事件,拋出 ConcurrentModificationException 例外;定義如下:

private static List<String> list = new ArrayList<String>();

使用時 CopyOnWriteArrayList,不會產生 fast-fail 事件;定義如下:

private static List<String> list = new CopyOnWriteArrayList<String>();
迷茫

設定100000000大些就拋異常了。 。 。

多線程用CopyOnWriteArrayList或ThreadLocal放ArrayList

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!