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

  • 購物 手機(jī)

    java如何實(shí)現(xiàn)線程安全

    2018-08-27 17:14:20 來源: 佰佰安全網(wǎng) 3436人閱讀
    導(dǎo)語:

    線程安全就是要保證數(shù)據(jù)的高度一致性和準(zhǔn)確性,但不是一定要加鎖才是線程安全性,那么java如何實(shí)現(xiàn)線程安全?

    java如何實(shí)現(xiàn)線程安全

    線程安全就是要保證數(shù)據(jù)的高度一致性和準(zhǔn)確性,但不是一定要加鎖才是線程安全性,只要代碼里沒有變量互串,線程之間互不影響,就是線程安全的,那么java如何實(shí)現(xiàn)線程安全?下面我們一起來了解一下。

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

    (1)互斥同步:

    互斥是因,同步是果,推薦使用synchronized關(guān)鍵字進(jìn)行同步,在concurrent包中有ReentrantLock類,實(shí)現(xiàn)效果差不多.還是推薦原生態(tài)的synchronized.

    (2)非阻塞同步:

    需要硬件指令完成.常用的指令有:

    Test-and-Set

    Fetch-and-Increment

    Swap

    Compare-and-Swap (CAS)

    Load-Linked/Store-Conditional (LL/SC)

    典型的應(yīng)用在AtomicInteger中

    (3)無同步方案

    可重入代碼:在代碼執(zhí)行的任何時(shí)刻中斷它,轉(zhuǎn)而去執(zhí)行另外一段代碼,而在控制權(quán)返回后,原來的程序不會(huì)出現(xiàn)任何錯(cuò)誤.

    可重入代碼有一些共同的特性:例如不以來存儲(chǔ)在堆上的數(shù)據(jù)和公用的系統(tǒng)資源,用到的狀態(tài)量都由參數(shù)中傳入,不調(diào)用非可重入的方法等.

    線程本地存儲(chǔ):如果一段代碼中所需要的數(shù)據(jù)必須與其他代碼共享,那就看看這些共享數(shù)據(jù)的代碼是否能保證在統(tǒng)一線程中執(zhí)行?如果能保證,可以把共享數(shù)據(jù)的可見范圍限制在同一個(gè)線程中,這樣,無需同步也能保證線程之間不出現(xiàn)數(shù)據(jù)爭(zhēng)用問題.在java中可以通過使用java.lang.ThreadLocal開實(shí)現(xiàn)線程本地存儲(chǔ)的功能.

    這種應(yīng)用在人人網(wǎng)的開源框架Rose有廣泛的應(yīng)用,最經(jīng)典的應(yīng)用在獲取當(dāng)前登錄用戶對(duì)象的時(shí)候,是通過t票 到cache中來拿到當(dāng)前登錄用戶的user對(duì)象.對(duì)象就保存在ThreadLocal中.經(jīng)典的web交互模型中"一個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)服務(wù)器線程"的處理方式,把user對(duì)象保存在線程本地存儲(chǔ)中 可以很好的解決線程安全的問題。

    佰佰安全網(wǎng)提醒您:實(shí)施網(wǎng)絡(luò)安全防范措施與應(yīng)用措施是必須要做的,這樣才能保障在網(wǎng)絡(luò)中的安全。最后大家想要了解更多網(wǎng)絡(luò)安全常識(shí)和網(wǎng)絡(luò)安全技術(shù)可在本網(wǎng)站了解。


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

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

    小編推薦