天天看點

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>