您好,登錄后才能下訂單哦!
本篇內容介紹了“線程安全是什么意思”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
https://blog.csdn.net/suifeng3051/article/details/52164267
個人總結:
線程安全:原子性、可見性、有序性
線程安全可以簡單理解為
一個方法或者一個實例可以在多線程環境中使用而不會出現問題
多個線程訪問了相同的資源
同一內存區(變量,數組,或對象)、系統(數據庫,web services等)或文件等
只有在一或多個線程向這些資源做了寫操作時才有可能發生,
只要資源沒有發生變化,多個線程讀取相同的資源就是安全的
我們無法知道操作系統何時會在兩個線程之間切換
有序性會被打破
定義在方法內部的局部變量
比如:多線程各自創建數據庫連接,在連接層面是線程安全的
但是操作的是數據庫相同的數據,在數據庫層面就不是線程安全的
即使一個對象是線程安全的不可變對象,指向這個對象的引用也可能不是線程安全的
比如ConcurrentHashMap 是線程安全的,但是使用它 get,再set 也不是線程安全的
Java中實現線程安全的方法
在Java多線程編程當中,提供了多種實現Java線程安全的方式:
最簡單的方式,使用Synchronization關鍵字:Java Synchronization介紹
使用java.util.concurrent.atomic 包中的原子類,例如 AtomicInteger
使用java.util.concurrent.locks 包中的鎖
使用線程安全的集合ConcurrentHashMap
使用volatile關鍵字,保證變量可見性(直接從內存讀,而不是從線程cache讀)
“線程安全是什么意思”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。