一、什麼叫容器?數組
-----》數組,對象,集合等等都是容器。安全
二、什麼叫同步容器?多線程
-----》Vector,ArrayList,HashMap等等。併發
三、在多線程環境下,爲何不用同步容器呢?ide
----》一、線程不安全問題。二、線程安全的狀況下,可是性能很是差問題。性能
Vector(線程安全,基本不用)----》ArrayList(線程不安全)----》使用Collections.synchronizedList()將ArrayList轉成線程安全(性能很是差,不經常使用)------》CopyOnWriteArrayList(併發容器,有讀寫分離的思想)spa
HashTable(線程安全,基本不用)----》HashMap(線程不安全)-----》使用Collections.synchronizedMap()將HashMap轉成線程安全(性能很是差,不經常使用)-------》ConcurrentHashMap(併發容器,利用下降鎖的力度,例如將一張大表分紅多張小表,若是進行添加操做的時候,只須要鎖一個小表,而不須要鎖整張表,從而提升了效率)線程
Vector和ArrayList有什麼區別呢?orm
-----》Vector是線程安全的,看源代碼上,它的add方法和remove方法都是加上了synchronized,意味着是單線程執行的,起不了多線程的優點。ArrayList是線程不安全的,add和remove都沒synchronized。對象
ArrayList不安全有什麼影響?
------》有可能沒法將值添加到同步容器中。