1. 程式人生 > >《JAVA併發程式設計實踐》第三章物件的共享

《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型別域中
或者 儲存到一個由鎖保護的域中