1.線程安全

1.什麼是線程安全類

    當多個線程訪問一個類時,如果不用考慮這些線程在運行時環境下的交替執行和調度,並且不需要額外的同步以及在調用方代碼不必要做其他的協調,這個類的行爲依然是正確的,那麼這個類是線程安全的類。


2.如何保證線程安全

   1.不要跨線程共享變量 

   2.共享狀態變爲不可變的 

   3.在任何訪問共享變量的時候使用同步


3.原子操作

   1.原子操作是指不會被線程調度機制打斷的操作;這種操作一旦開始,就一直運行到結束,中間不會換到另一個線程)

   2.java.util.concurrent.atomic包下實現了原子操作

   3.java中java.util.concurrent.atomic(CAS理論)+volatile(內存可見性)關鍵字

   4.a和b各爲原子操作,但是a+b不等於原子操作

   5.原子操作可以保證線程安全,volatile關鍵字保證了內存可見性

    注:原子操作+volatile內存可見性達到了鎖的效果

4.鎖

   1.鎖保證了內存的可見性

   2.鎖保證了線程的互斥

   3.鎖保證了a和b各爲原子操作,但是a+b等於原子操作

   注:鎖保證了原子性和內存可見性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章