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

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

全員に返信 (3)
左手右手慢动作

ArrayList本来就不是线程安全的,你可以用Collections.synchronizedList()返回的List试一下

いいねを押す+0
    迷茫

    本例中,分别测试 ArrayList 和 CopyOnWriteArrayList 这两种情况。ArrayList 会产生 fast-fail 事件,而 CopyOnWriteArrayList 不会产生 fast-fail 事件。

    使用 ArrayList 时,会产生 fast-fail 事件,抛出 ConcurrentModificationException 异常;定义如下:

    private static List list = new ArrayList();

    使用时 CopyOnWriteArrayList,不会产生 fast-fail 事件;定义如下:

    private static List list = new CopyOnWriteArrayList();
    いいねを押す+0
      迷茫

      设置100000000大些就抛异常了。。。

      多线程用CopyOnWriteArrayList或者ThreadLocal放ArrayList

      いいねを押す+0
        最新のダウンロード
        詳細>
        ウェブエフェクト
        公式サイト
        サイト素材
        フロントエンドテンプレート
        私たちについて 免責事項 Sitemap
        PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!