《JAVA併發程式設計實踐》第三章物件的共享
阿新 • • 發佈:2018-12-31
1 怎麼理解發布和逸出?
轉自別人的回答講的很詳細
點選這裡
2.如何構造一個安全的物件?
不可變的物件一定是執行緒安全的
在多執行緒訪問這個不可變的物件時,物件的例項域都是固定不變的,也就不存在多執行緒環境寫操作帶來的失效資料的問題。
什麼樣的物件才是不可變的?
物件建立後其狀態就不能修改
物件所有的域都是final型別
物件是正確建立的,建立期間,this引用沒有逸出
個人理解
public class Pojo{
private final String name;
private final Integer age;
public Pojo(){
name = "lilei";
age = 1;
}
}
實際的專案中碰到的都是可變的物件,那如何保證這些物件的執行緒安全性?
同步
3.如何安全的釋出一個物件
靜態初始化函式中初始化一個物件引用
將該引用儲存在 volatile 或者 AtomicReferance物件中
或者 儲存到某個正確構造物件的final型別域中
或者 儲存到一個由鎖保護的域中