溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JAVA并發的示例分析

發布時間:2021-09-06 17:31:07 來源:億速云 閱讀:566 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關JAVA并發的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

JAVA并發總覽

核心問題

并不是程序的漏洞導致的,而是操作系統底層機制導致的

JAVA并發的示例分析

原子性:

JAVA并發的示例分析

可見性問題:

改的是緩存,但是緩存對另一個線程不可見

JAVA并發的示例分析

有序性問題:

正常應該先創建對象,再賦值;而編譯器對指令執行順序出于某些原因進行了優化,然后改變了執行順序,如下:

JAVA并發的示例分析

解決方案

可見性:

JAVA并發的示例分析

有序性:

這個原則在加了volatile和鎖的時候自動生效,也就是說解決了可見性和原子性,可見性順帶就解決了

JAVA并發的示例分析

原子性:

操作系統角度,監視器的名字是管程

解決了原子性問題,可見性和有序性都能解決

JAVA并發的示例分析

JAVA并發的示例分析

JAVA并發的示例分析

并發工具

CAS的方式會出現ABA問題,就是說是被修改了兩次而又變回了原來的值,但是檢查是沒有變化的,對于引用對象就會出現問題,引用對象地址沒變,但是引用的東西發生了變化

JAVA并發的示例分析

其他方案

ThreadLocal,線程是Key,值是線程的數據,每個線程取東西存東西,都是通過線程key區分,來隔離的

JAVA并發的示例分析

感謝各位的閱讀!關于“JAVA并發的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女