丝袜足j国产在线视频456|亚洲精品白浆高清久久久久久|亚洲熟妇无码专区|丝袜国产污视频在线播放

  • 購(gòu)物 手機(jī)

    java如何保證線程安全

    2018-08-24 11:36:22 來(lái)源: 佰佰安全網(wǎng) 3209人閱讀
    導(dǎo)語(yǔ):

    在jvm的世界里,線程就像不相干的平行空間,串行在虛擬機(jī)中,那么java如何保證線程安全?

    java如何保證線程安全

    并發(fā)(concurrency)一個(gè)并不陌生的詞,簡(jiǎn)單來(lái)說(shuō),就是cpu在同一時(shí)刻執(zhí)行多個(gè)任務(wù)。而Java并發(fā)則由多線程實(shí)現(xiàn)的。在jvm的世界里,線程就像不相干的平行空間,串行在虛擬機(jī)中,那么java如何保證線程安全?

    網(wǎng)絡(luò)安全小知識(shí)

    保證類線程安全的措施:

    不共享線程間的變量;

    設(shè)置屬性變量為不可變變量;

    每個(gè)共享的可變變量都使用一個(gè)確定的鎖保護(hù);

    1.保證線程安全的思路:

    通過(guò)架構(gòu)設(shè)計(jì)

    通過(guò)上層的架構(gòu)設(shè)計(jì)和業(yè)務(wù)分析來(lái)避免并發(fā)場(chǎng)景。比如需要用多線程或分布式集群統(tǒng)計(jì)一堆用戶的相關(guān)統(tǒng)計(jì)值,由于用戶的統(tǒng)計(jì)值是共享數(shù)據(jù),因此需要保證線程安全。從業(yè)務(wù)上分析出用戶之間的數(shù)據(jù)并不共享,因此可以設(shè)計(jì)一個(gè)規(guī)則來(lái)保證一個(gè)用戶的計(jì)算工作和數(shù)據(jù)訪問(wèn)只被一個(gè)線程或一臺(tái)機(jī)器完成,這樣從設(shè)計(jì)上避免了接下來(lái)可能的并發(fā)問(wèn)題。

    2.保證類無(wú)狀態(tài):

    有狀態(tài)會(huì)限制橫向擴(kuò)展能力,也可能產(chǎn)生并發(fā)問(wèn)題。如果類是無(wú)狀態(tài)的,那它永遠(yuǎn)是線程安全的。因此在設(shè)計(jì)階段盡可能用無(wú)狀態(tài)的類來(lái)滿足業(yè)務(wù)需求。

    3.區(qū)別原子操作和復(fù)合操作:

    常見(jiàn)的復(fù)合操作包括check-then-act, i++等。

    雖然check-then-act從表面上看很簡(jiǎn)單,但卻普遍存在與我們?nèi)粘5拈_發(fā)中,特別是在數(shù)據(jù)庫(kù)存取這一塊。比如我們需要在數(shù)據(jù)庫(kù)里存一個(gè)客戶的統(tǒng)計(jì)值,當(dāng)統(tǒng)計(jì)值不存在時(shí)初始化,當(dāng)存在時(shí)就去更新。如果不把這組邏輯設(shè)計(jì)為原子性的就很有可能產(chǎn)生出兩條這個(gè)客戶的統(tǒng)計(jì)值。

    佰佰安全網(wǎng)提醒您:為了保障自己的安全,在網(wǎng)絡(luò)中一定要實(shí)施網(wǎng)絡(luò)安全防范措施與應(yīng)用措施,另外多學(xué)習(xí)一些網(wǎng)絡(luò)安全常識(shí)和網(wǎng)絡(luò)安全技術(shù)知識(shí)也是非常重要的。


    責(zé)任編輯:張小付

    • 評(píng)論
    • 評(píng)論
    以下網(wǎng)友言論不代表佰佰安全網(wǎng)觀點(diǎn) 發(fā)表

    相關(guān)閱讀

    為更好的為公眾說(shuō)明安全知識(shí)的重要性,本站引用了部分來(lái)源于網(wǎng)絡(luò)的圖片插圖,無(wú)任何商業(yè)性目的。適用于《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》第六條“為介紹、評(píng)論某一作品或者說(shuō)明某一問(wèn)題,在向公眾提供的作品中適當(dāng)引用已經(jīng)發(fā)表的作品”之規(guī)定。如果權(quán)利人認(rèn)為受到影響,請(qǐng)與我方聯(lián)系,我方核實(shí)后立即刪除。

    小編推薦