国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

看java并發(fā)編程實(shí)戰(zhàn) Synchronized 的一點(diǎn)思考

Tonny / 450人閱讀

摘要:看并發(fā)編程實(shí)戰(zhàn)第章程序清單附件時(shí)對(duì)于下面的話如何理解我的理解是方法等同于他是對(duì)上的鎖,也只能保證同一時(shí)刻只有一個(gè)線程可以訪問(wèn)同一實(shí)例的方法。的是對(duì)進(jìn)行上鎖,因此任何訪問(wèn)的線程安全的方法,同一時(shí)刻只能有一個(gè)線程進(jìn)行。

看《java 并發(fā)編程實(shí)戰(zhàn)》 第4章 程序清單4-14附件時(shí)

class BadListHelper {

public List list = Collections.synchronizedList(new ArrayList());

public synchronized boolean putIfAbsent(E x) {
    boolean absent = !list.contains(x);
    if (absent)
        list.add(x);
    return absent;
}

}

@ThreadSafe
class GoodListHelper {

public List list = Collections.synchronizedList(new ArrayList());

public boolean putIfAbsent(E x) {
    synchronized (list) {
        boolean absent = !list.contains(x);
        if (absent)
            list.add(x);
        return absent;
    }
}

}

對(duì)于BadListHelper 下面的話如何理解?

我的理解是:
public synchronized boolean putIfAbsent(E x)方法等同于
public boolean putIfAbsent(E x){
synchronized (this){

  ....

}
}

他是對(duì)BadListHelper 上的鎖,也只能保證同一時(shí)刻只有一個(gè)線程可以訪問(wèn)BadListHelper 同一實(shí)例的putIfAbsent方法。但是持有l(wèi)ist的引用的其它線程任然可以使用list其它方法修改list(即使該方法對(duì)應(yīng)list來(lái)說(shuō)是線程安全的、原子的); 但是我們的目的是 為了同一時(shí)刻只能有一個(gè)線程可以修改list。 因此書(shū)上說(shuō) “問(wèn)題在于錯(cuò)誤的鎖上進(jìn)行了同步” 。

GoodListHelper 的putIfAbsent是對(duì)list進(jìn)行上鎖,因此任何訪問(wèn)list的線程安全的方法,同一時(shí)刻只能有一個(gè)線程進(jìn)行。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/67056.html

相關(guān)文章

  • 初學(xué)者福音!可能是最適合你的Java學(xué)習(xí)路線和方法推薦。

    摘要:學(xué)習(xí)完多線程之后可以通過(guò)下面這些問(wèn)題檢測(cè)自己是否掌握,下面這些問(wèn)題的答案以及常見(jiàn)多線程知識(shí)點(diǎn)的總結(jié)在這里。可選數(shù)據(jù)結(jié)構(gòu)與算法如果你想進(jìn)入大廠的話,我推薦你在學(xué)習(xí)完基礎(chǔ)或者多線程之后,就開(kāi)始每天抽出一點(diǎn)時(shí)間來(lái)學(xué)習(xí)算法和數(shù)據(jù)結(jié)構(gòu)。 我自己總結(jié)的Java學(xué)習(xí)的系統(tǒng)知識(shí)點(diǎn)以及面試問(wèn)題,已經(jīng)開(kāi)源,目前已經(jīng) 35k+ Star。會(huì)一直完善下去,歡迎建議和指導(dǎo),同時(shí)也歡迎Star: https://...

    yanest 評(píng)論0 收藏0
  • Java 重入鎖 ReentrantLock 原理分析

    摘要:的主要功能和關(guān)鍵字一致,均是用于多線程的同步。而僅支持通過(guò)查詢當(dāng)前線程是否持有鎖。由于和使用的是同一把可重入鎖,所以線程可以進(jìn)入方法,并再次獲得鎖,而不會(huì)被阻塞住。公平與非公平公平與非公平指的是線程獲取鎖的方式。 1.簡(jiǎn)介 可重入鎖ReentrantLock自 JDK 1.5 被引入,功能上與synchronized關(guān)鍵字類似。所謂的可重入是指,線程可對(duì)同一把鎖進(jìn)行重復(fù)加鎖,而不會(huì)被阻...

    lx1036 評(píng)論0 收藏0
  • 【轉(zhuǎn)】成為Java頂尖程序員 ,這10本書(shū)就夠了

    摘要:實(shí)戰(zhàn)高并發(fā)程序設(shè)計(jì)這本書(shū)是目前點(diǎn)評(píng)推薦比較多的書(shū),其特色是案例小,好實(shí)踐代碼有場(chǎng)景,實(shí)用。想要學(xué)習(xí)多線程的朋友,這本書(shū)是我大力推薦的,我的個(gè)人博客里面二十多篇的多線程博文都是基于此書(shū),并且在這本書(shū)的基礎(chǔ)上進(jìn)行提煉和總結(jié)而寫(xiě)出來(lái)的。 學(xué)習(xí)的最好途徑就是看書(shū),這是我自己學(xué)習(xí)并且小有了一定的積累之后的第一體會(huì)。個(gè)人認(rèn)為看書(shū)有兩點(diǎn)好處:showImg(/img/bVr5S5);  1.能出版出...

    DTeam 評(píng)論0 收藏0
  • 【J2SE】java并發(fā)編程實(shí)戰(zhàn) 讀書(shū)筆記( 一、二、三章)

    摘要:發(fā)布的對(duì)象內(nèi)部狀態(tài)可能會(huì)破壞封裝性,使程序難以維持不變性條件。不變性線程安全性是不可變對(duì)象的固有屬性之一。可變對(duì)象必須通過(guò)安全方式來(lái)發(fā)布,并且必須是線程安全的或者有某個(gè)鎖保護(hù)起來(lái)。 線程的優(yōu)缺點(diǎn) 線程是系統(tǒng)調(diào)度的基本單位。線程如果使用得當(dāng),可以有效地降低程序的開(kāi)發(fā)和維護(hù)等成本,同時(shí)提升復(fù)雜應(yīng)用程序的性能。多線程程序可以通過(guò)提高處理器資源的利用率來(lái)提升系統(tǒng)的吞吐率。與此同時(shí),在線程的使用...

    QLQ 評(píng)論0 收藏0
  • 深入理解 Java 多線程系列(1)——一個(gè)簡(jiǎn)單需求的并行改造 & Java多線程的通信問(wèn)題

    摘要:所以接下來(lái),我們需要簡(jiǎn)單的介紹下多線程中的并發(fā)通信模型。比如中,以及各種鎖機(jī)制,均為了解決線程間公共狀態(tài)的串行訪問(wèn)問(wèn)題。 并發(fā)的學(xué)習(xí)門(mén)檻較高,相較單純的羅列并發(fā)編程 API 的枯燥被動(dòng)學(xué)習(xí)方式,本系列文章試圖用一個(gè)簡(jiǎn)單的栗子,一步步結(jié)合并發(fā)編程的相關(guān)知識(shí)分析舊有實(shí)現(xiàn)的不足,再實(shí)現(xiàn)邏輯進(jìn)行分析改進(jìn),試圖展示例子背后的并發(fā)工具與實(shí)現(xiàn)原理。 本文是本系列的第一篇文章,提出了一個(gè)簡(jiǎn)單的業(yè)務(wù)場(chǎng)景...

    ruicbAndroid 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<