java 單例模式中雙重檢查鎖 volatile 的作用?

  作用:保證有序性,禁止指令重排序。   原因: 在執行instance = new Singleton()語句時,一共是有三步操作的。 1.堆中分配內存 2.將創建的對象放到分配的內存中 3.將instance引用指向內存地址。 在這三步有可能會產生指令重排序即有兩種結果可能產生:123與132。只產生兩種結果的原因是存在as-if-serial語義(不管怎麼重排序,單線程程序的執行結果不會改
相關文章
相關標籤/搜索