《JAVA併發編程實踐》第三章對象的共享

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類型域中
或者 保存到一個由鎖保護的域中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章