1. 程式人生 > >java併發程式設計筆記

java併發程式設計筆記

這裡只是用於記錄我學習java併發程式設計過程中的一些心得和重要的知識點.

1:volatile通常被當做表示完成,中斷,狀態的標記,但是不足以使自增操作原子化(實測,不行),加鎖可以保證原子性和可見性,但是volatile只能保證可見性.

2:在沒有同步的操作中,執行緒進行讀取變數,很有可能讀取的是一個過期的量,但是這個量是過程中某個執行緒實際得出的值,而不是一個憑空而來的值,這樣的保證稱為"最低限的安全性",但是對於沒有宣告volatile的64位的long和double變數來說,是不行的,這個jvm對64位double和long變數的操作有關,你可能會得到一個憑空的數.

3:不可變物件的理解:一開始我並不能理解併發中使用不可變物件,如果不可變,那麼我使用這個物件是為了什麼呢?但是後來我理解了,這個不可變並不是真的不可變,將他宣告為不可變的物件,只是為了不讓別的執行緒修改這個物件,但是有一點是要宣告的,物件不可變並不等於指向這個物件的引用不可變,一旦一個執行緒獲得了一個不可變物件的引用,就不用擔心這個物件被改變,當改變這個引用以完成任務時,在通過宣告為volatile來通知其他執行緒,這樣就完成了同步.