java并发编程线程安全
2019獨角獸企業重金招聘Python工程師標準>>>
編寫線程安全的代碼實質就是管理對狀態的訪問,而且通常是共享的。可變的狀態,對象的狀態就是數據,存儲在狀態變量中,比如實例域,或者靜態域,同時還包含了其它附屬的域,例如hashmap的狀態一部分存儲到對象本身中,但同時也存儲到很多mqp.entry中對象中,一個對象的狀態還包含了任何會對他外部可見行為產生影響的數據。 所謂共享是指一個對象可以被多個線程訪問, 所謂可變:是指變量的值在其生命周期內可以改變,
真正目的:在不可控制的并發訪問中保護數據
線程安全必要條件: 1:對象是否被兩個或以上的線程訪問 某個線程是否會寫入該變量 此時必須使用同步來協調線程對該變量的訪問 線程安全的條件是程序中如何使用對象,而不是對象做了什么。
杜絕并發的情況的措施: 1:不要跨線程共享變量。 2:狀態變量為不可變。 3:在任何訪問狀態變量的時候使用同步
線程作為時序調度的基本單元--沒有明確協調的情況下 線程間相互同步的或者異步的執行
面向對象的技術 封裝和數據隱藏 不僅可以編寫組織良好可維護的類,還可以,還可以創建線程安全的類 程序的狀態封裝的越好線程就越使用這種安全 對于并發代碼要更加堅定的遵循這個實踐。
當某個變量的值,會制約其它幾個變量的值時,因此更新一個變量的值時,要在同一原子操作中更新其它幾個變量的值。保護狀態一致性
轉載于:https://my.oschina.net/u/876290/blog/289635
總結
以上是生活随笔為你收集整理的java并发编程线程安全的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大家都在用并发,小编带你了解并发的背景
- 下一篇: Redis管道(Pipeline)详解