CopyOnWriteArrayList源碼

  • 為了將讀取的性能發(fā)揮到極致商架,JDK提供了此類:相比與讀寫鎖,寫入不會(huì)阻塞讀取操作兔簇,讀取操作也不會(huì)阻塞寫入操作。只有在寫入和寫入之間需要進(jìn)行同步等待。因此在讀操作遠(yuǎn)多于寫操作的情況下垄琐,效率極高边酒。

  • 讀操作相關(guān)源碼:完全無鎖

    @SuppressWarnings("unchecked")
    private E get(Object[] a, int index) {
        return (E) a[index];
    }

    /**
     * {@inheritDoc}
     *
     * @throws IndexOutOfBoundsException {@inheritDoc}
     */
    public E get(int index) {
        return get(getArray(), index);
    }
  • 寫操作源碼:
    /**
     * Appends the specified element to the end of this list.
     *
     * @param e element to be appended to this list
     * @return <tt>true</tt> (as specified by {@link Collection#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();
        }
    }

通過上述源碼可知,讀取操作完全不用加鎖狸窘,寫入也不會(huì)阻塞讀取操作墩朦,只有寫入和寫入之間需要進(jìn)行同步等待。(因?yàn)閏opyOnWrite在寫入操作的時(shí)候翻擒,進(jìn)行一次自我復(fù)制氓涣,并不修改原來的內(nèi)容,因此不會(huì)影響讀操作韭寸,而只是將修改的內(nèi)容寫入副本中春哨,又因?yàn)閷憣戇M(jìn)行加鎖,因此線程安全)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恩伺,一起剝皮案震驚了整個(gè)濱河市赴背,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晶渠,老刑警劉巖凰荚,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異褒脯,居然都是意外死亡便瑟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門番川,熙熙樓的掌柜王于貴愁眉苦臉地迎上來到涂,“玉大人,你說我怎么就攤上這事颁督〖模” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵沉御,是天一觀的道長(zhǎng)屿讽。 經(jīng)常有香客問我,道長(zhǎng)吠裆,這世上最難降的妖魔是什么伐谈? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮试疙,結(jié)果婚禮上诵棵,老公的妹妹穿的比我還像新娘。我一直安慰自己祝旷,他們只是感情好非春,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布柱徙。 她就那樣靜靜地躺著缓屠,像睡著了一般奇昙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敌完,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天储耐,我揣著相機(jī)與錄音,去河邊找鬼滨溉。 笑死什湘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晦攒。 我是一名探鬼主播闽撤,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼脯颜!你這毒婦竟也來了哟旗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤栋操,失蹤者是張志新(化名)和其女友劉穎闸餐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矾芙,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舍沙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剔宪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拂铡。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖葱绒,靈堂內(nèi)的尸體忽然破棺而出感帅,到底是詐尸還是另有隱情,我是刑警寧澤哈街,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布留瞳,位于F島的核電站,受9級(jí)特大地震影響骚秦,放射性物質(zhì)發(fā)生泄漏她倘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一作箍、第九天 我趴在偏房一處隱蔽的房頂上張望硬梁。 院中可真熱鬧,春花似錦胞得、人聲如沸楞陷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巡扇。三九已至,卻和暖如春隘马,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工外莲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兔朦。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓偷线,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親沽甥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子声邦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • ``` /* * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject ...
    非專業(yè)碼農(nóng)閱讀 336評(píng)論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法摆舟,內(nèi)部類的語法亥曹,繼承相關(guān)的語法,異常的語法盏檐,線程的語...
    子非魚_t_閱讀 31,631評(píng)論 18 399
  • 參考:http://www.cnblogs.com/skywang12345/p/3498483.html 1歇式、C...
    SinX竟然被占用了閱讀 512評(píng)論 0 1
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,715評(píng)論 0 9
  • 我是一個(gè)熱愛閱讀的女孩,平時(shí)喜歡用文字去記錄真實(shí)發(fā)生的生活硫豆。 大概一年前龙巨,朋友鼓勵(lì)我開通個(gè)人公眾號(hào)用以發(fā)表原創(chuàng)文章...
    寫意人生閱讀 907評(píng)論 2 2