天天看點

同步類容器

同步類容器

        同步類容器包括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>());