天天看点

ArrayList和HashMap、Set

List、Set、Map都是线程不安全的

底层是数组,传的是一个Object泛型

初始值长度10,jdk8是空(采用懒加载机制)

扩容会变成10+10/2=15

ArrayList 是线程不安全的

ArrayList的故障现象

导致原因

解决方法

优化建议

异常: 多个线程进行add可能会报<code>java.util.ConcurrentModificationException</code>异常 导致原因: 多个线程同时写入同一个位置 解决方法: 解决多线程并发写入异常使用 优化建议: 1.new Vector&lt;&gt;() 2.Collections.synchronizedList(new ArrayList&lt;&gt;()); 3.new CopyOnWriteArrayList(); 建议是呀new CopyOnWriteArrayList();

初始值16

达到扩容条件就会变成<code>newCap = oldCap &lt;&lt; 1</code>也就是原来的2倍

解决并发过程中线程不安全的方式是使用<code>Map&lt;String,String&gt; map= new ConcurrentHashMap&lt;&gt;();</code>

set也是不安全的和List一样会报同样的错误

Set的底层是<code>HashMap</code>

key是泛型E

value是Object

解决多线程不安全的方式是使用<code>Set set = new CopyOnWriteArraySet&lt;&gt;();</code>