欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

【源碼分析篇】CopyOnWriteArrayList

add()

public boolean add(E e) {
    final ReentrantLock lock = this.lock;
    lock.lock();
    try {
        Object[] elements = getArray();
        int len = elements.length;
        Object[] newElements = Arrays.copyOf(elements, len + 1);
        newElements[len] = e;
        setArray(newElements);
        return true;
    } finally {
        lock.unlock();
    }
}
  1. 先去獲取鎖,若沒(méi)有獲取鎖,則阻塞
  2. 將原來(lái)的數(shù)組拷貝一份,然后在新數(shù)組上進(jìn)行添加操作
  3. 將新數(shù)組賦值給舊數(shù)組

get()

public E get(int index) {
    return get(getArray(), index);
}
private E get(Object[] a, int index) {
    return (E) a[index];
}

get()方法直接在原數(shù)組上面進(jìn)行操作,所以CopyOnWriteArrayList不會(huì)保證數(shù)組的實(shí)時(shí)性,但可以保證數(shù)據(jù)的最終一致性,它適用于寫多讀少的場(chǎng)景,如果對(duì)數(shù)據(jù)實(shí)時(shí)性要求較高的話,不推薦適用CopyOnWriteArrayList。

remove()

public E remove(int index) {
    final ReentrantLock lock = this.lock;
    lock.lock();
    try {
        Object[] elements = getArray();
        int len = elements.length;
        E oldValue = get(elements, index);
        int numMoved = len - index - 1;
        if (numMoved == 0)
            setArray(Arrays.copyOf(elements, len - 1));
        else {
            Object[] newElements = new Object[len - 1];
            System.arraycopy(elements, 0, newElements, 0, index);
            System.arraycopy(elements, index + 1, newElements, index,
                             numMoved);
            setArray(newElements);
        }
        return oldValue;
    } finally {
        lock.unlock();
    }
}
  1. 和add()方法一樣,remove方法也是先獲取鎖,沒(méi)有則阻塞
  2. 獲取到鎖了則判斷當(dāng)前元素下標(biāo)是否為最后一個(gè)元素,若為最后一個(gè)元素,則只需要進(jìn)行一次數(shù)組拷貝即可,若不是,則需要進(jìn)行兩次數(shù)組拷貝,分別是該元素前半部分和該元素后半部分。
  3. 最后再給源數(shù)組賦值。

    鄙人新開(kāi)設(shè)的模塊,之后會(huì)將微信公眾號(hào)【An前碼后】中的文章陸續(xù)搬遷到??途W(wǎng),若想閱讀更多的源碼解析,請(qǐng)關(guān)注微信公眾號(hào)【An前碼后】

#Java源碼##學(xué)習(xí)路徑#
全部評(píng)論

相關(guān)推薦

評(píng)論
1
收藏
分享

創(chuàng)作者周榜

更多
正在熱議
更多
# 面試問(wèn)題記錄 #
61017次瀏覽 880人參與
# 硬件人的簡(jiǎn)歷怎么寫 #
254431次瀏覽 2886人參與
# 京東TGT #
47646次瀏覽 174人參與
# 你遇到過(guò)哪些神仙同事 #
71862次瀏覽 643人參與
# 我的2024小目標(biāo) #
58204次瀏覽 392人參與
# 工作中,你有沒(méi)有遇到非常愛(ài)罵人的領(lǐng)導(dǎo)? #
17063次瀏覽 128人參與
# 百度工作體驗(yàn) #
204865次瀏覽 1907人參與
# 實(shí)習(xí)生應(yīng)該準(zhǔn)時(shí)下班嗎 #
201667次瀏覽 1314人參與
# 上班到公司第一件事做什么? #
37921次瀏覽 347人參與
# 國(guó)企和大廠硬件兄弟怎么選? #
120168次瀏覽 1656人參與
# 工作一周年分享 #
19253次瀏覽 111人參與
# 沒(méi)有合適的工作,你會(huì)先找個(gè)干著,還是考公考研 #
104462次瀏覽 1077人參與
# 面試吐槽bot #
14310次瀏覽 87人參與
# 互聯(lián)網(wǎng)行業(yè)現(xiàn)在還值得去嗎 #
6439次瀏覽 42人參與
# 面試經(jīng)驗(yàn)談 #
39176次瀏覽 511人參與
# 拼多多工作體驗(yàn) #
16766次瀏覽 152人參與
# 入職第五天,你被拉進(jìn)了幾個(gè)工作群 #
18017次瀏覽 80人參與
# 假如我穿越到了媽媽的18歲 #
6379次瀏覽 43人參與
# 國(guó)企vs私企,你更想去? #
217664次瀏覽 2073人參與
# 你們的畢業(yè)論文什么進(jìn)度了 #
999403次瀏覽 9398人參與
# 機(jī)械人,你的第一份感謝信是誰(shuí)給的 #
26873次瀏覽 296人參與
??途W(wǎng)
牛客企業(yè)服務(wù)