java併發編程線程安全

編寫線程安全的代碼實質就是管理對狀態的訪問,並且一般是共享的。可變的狀態,對象的狀態就是數據,存儲在狀態變量中,好比實例域,或者靜態域,同時還包含了其它附屬的域,例如hashmap的狀態一部分存儲到對象自己中,但同時也存儲到不少mqp.entry中對象中,一個對象的狀態還包含了任何會對他外部可見行爲產生影響的數據。 所謂共享是指一個對象能夠被多個線程訪問, 所謂可變:是指變量的值在其生命週期內能夠改變,安全

真正目的:在不可控制的併發訪問中保護數據併發

線程安全必要條件: 1:對象是否被兩個或以上的線程訪問 某個線程是否會寫入該變量 此時必須使用同步來協調線程對該變量的訪問 線程安全的條件是程序中如何使用對象,而不是對象作了什麼。異步

杜絕併發的狀況的措施: 1:不要跨線程共享變量。 2:狀態變量爲不可變。 3:在任何訪問狀態變量的時候使用同步線程

線程做爲時序調度的基本單元--沒有明確協調的狀況下 線程間相互同步的或者異步的執行對象

面嚮對象的技術 封裝和數據隱藏 不只能夠編寫組織良好可維護的類,還能夠,還能夠建立線程安全的類 程序的狀態封裝的越好線程就越使用這種安全 對於併發代碼要更加堅決的遵循這個實踐。生命週期

當某個變量的值,會制約其它幾個變量的值時,所以更新一個變量的值時,要在同一原子操做中更新其它幾個變量的值。保護狀態一致性同步

相關文章
相關標籤/搜索