【多线程】集合类与多线程

ArrayList,Collections.synchronizedList,CopyOnWriteArrayList的适用情况

java.util.ArrayList

  • 非线程安全
  • 单线程情况下可用

Collections.synchronizedList

1
List<Integer> list = Collections.synchronizedList(new ArrayList<>());
  • 显式调用迭代器:通过list对象操作集合,无需考虑同步问题

    1
    2
    list.add(i);
    list.remove();
  • 隐式调用迭代器:通过获取内部元素直接操作,需要考虑同步问题(synchronized)

    1
    2
    3
    4
    5
    synchronized(this){
    for(int n:list){
    System.out.println(n);
    }
    }
  • 多线程情况下读少写多时适用

CopyOnWriteArrayList

  • 适用copy-on-write时,每次执行“写”操作都会执行复制。如果频繁复制,比较耗时,当写操作比较少而读非常高时,适用该方法非常棒。

综上

  • java.util.ArrayList:单线程
  • Collections.synchronizedList:写多读少
  • CopyOnWriteArrayList:写少读多
-------------本文结束感谢您的阅读😜-------------
喜欢较真儿的平头哥 wechat
微信扫一扫,没事常联系 [请注明博客添加]
支持原创,支持开源,感谢打赏,不懈努力。
点击打赏,可领取支付宝红包,不信你试试😏😏😏!
0%