国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Kata系列之雙重檢查鎖、靜態工廠、枚舉類實現單例類

2019-11-08 18:49:42
字體:
來源:轉載
供稿:網友

package test;/** * 雙重檢查鎖實現單例類 * @author huawangxin * 2017年2月16日 下午2:28:27 * * 代碼會檢查兩次單例類是否有已存在的實例,一次加鎖一次不加鎖,一次確保不會有多個實例被創建。 * 該模型存在的問題: * 解決方案:在JDK1.5中,java修復了其內存模型的問題。volatile修飾符修飾object變量, * 能保證先行發生關系,所有的寫(write)都將先行發生于讀(read)。在JDK1.5之前,這種方法會有問題。 *  */public class TestSingleton {    PRivate static TestSingleton object;    public static TestSingleton getInstance() {          if (object == null) {              synchronized (object) {                  if (object == null) {                      object = new TestSingleton();                  }              }          }          return object;      }}

package test;/** * 雙重檢查鎖實現單例類【改進版】 * @author huawangxin * 2017年2月16日 下午2:28:27 *  */public class TestSingleton2 {    private static TestSingleton2 instance = null;      private TestSingleton2() {}      private static synchronized void syncInit() {          if (instance == null) {              instance = new TestSingleton2();          }      }      public static TestSingleton2 getInstance() {          if (instance == null) {              syncInit();          }          return instance;      }}

package test;/** * 枚舉實現單例類【改進二版】 * @author huawangxin * 2017年2月16日 下午2:28:27 * 該方式為目前最好的原因:1.線程安全 2.不會因為序列化而產生新實例 3.防止反射攻擊 *  */public enum Work {    INSTANCE;    public TestSingleton singleWrite() {        return new TestSingleton();    }

    private Object readResolve(){        return INSTANCE;    }}public class Test{    public static void main(String[] args) {        TestSingleton write = Work.INSTANCE.singleWrite();    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涡阳县| 安泽县| 全州县| 漳州市| 含山县| 石台县| 邓州市| 古浪县| 宁都县| 墨竹工卡县| 昭苏县| 江源县| 商洛市| 原阳县| 荔浦县| 宾川县| 潢川县| 新化县| 莱西市| 集安市| 巴青县| 晴隆县| 灯塔市| 和硕县| 新郑市| 灵石县| 株洲县| 高陵县| 阿克| 巫溪县| 井陉县| 稷山县| 阿拉善右旗| 哈密市| 定襄县| 松滋市| 连山| 昌乐县| 日喀则市| 鸡西市| 尼勒克县|