List、Set、Map都是线程不安全的
底层是数组,传的是一个Object泛型
初始值长度10,jdk8是空(采用懒加载机制)
扩容会变成10+10/2=15
ArrayList 是线程不安全的
ArrayList的故障现象
导致原因
解决方法
优化建议
异常: 多个线程进行add可能会报<code>java.util.ConcurrentModificationException</code>异常 导致原因: 多个线程同时写入同一个位置 解决方法: 解决多线程并发写入异常使用 优化建议: 1.new Vector<>() 2.Collections.synchronizedList(new ArrayList<>()); 3.new CopyOnWriteArrayList(); 建议是呀new CopyOnWriteArrayList();
初始值16
达到扩容条件就会变成<code>newCap = oldCap << 1</code>也就是原来的2倍
解决并发过程中线程不安全的方式是使用<code>Map<String,String> map= new ConcurrentHashMap<>();</code>
set也是不安全的和List一样会报同样的错误
Set的底层是<code>HashMap</code>
key是泛型E
value是Object
解决多线程不安全的方式是使用<code>Set set = new CopyOnWriteArraySet<>();</code>