同步類容器
同步類容器包括Vector和Hashtable,二者是早期JDK的一部分,此外還包括在JDK1.2中添加的一些功能相似的類,這些同步的封裝器類是由Collections.synchronizedXxx等工廠方法建立的。這些類實作線程安全的方法是:将它們的狀态封裝起來,并對每個公有方法都進行同步,使得每次隻有一個線程能通路容器的狀态。
Vector和Hashtable早已經過時,很少使用它們,來看簡單看以下其源碼
1、Vector:
①底層實作是數組
②初始化容量是10
③作為線程安全的容器,是因為在方法上都加上了synchronized
④擴容因子是可以指定的,預設是0。若果擴容因子大于0,新容量是原來的容量加擴容因子,如果小于等于0,是原來的2倍。
2、Hashtable:
①底層是Hashtable.Entry數組,而Entry是一個單項連結清單
②初始化容量11,加載因子0.75
③作為線程安全的容器,是因為在方法上都加上了synchronized
④不可以是null的key和value
⑤擴容是原來的二倍,最大不能超過限定值
List<String> list = Collections.synchronizedList(new ArrayList<String>());
Set<String> set = Collections.synchronizedSet(new HashSet<String>());
Map<String, String> map = Collections.synchronizedMap(new HashMap<String, String>());