单例模式---懒汉模式与饿汉模式
生活随笔
收集整理的這篇文章主要介紹了
单例模式---懒汉模式与饿汉模式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
單例模式:
1)一個(gè)類只能創(chuàng)建一個(gè)實(shí)例
2)構(gòu)造函數(shù)和靜態(tài)變量(加載類時(shí)即初始化)需為private
3)get方法應(yīng)該為public static,可供全局訪問
//懶漢模式 public class lazySingleton {private static lazySingleton singleton=null; //懶,所以就不實(shí)例化了,加載類較快,但是第一次訪問類可能會(huì)有點(diǎn)慢private lazySingleton(){//nothing }public static lazySingleton getSingleton(){if(singleton==null){synchronized (this){if(singleton==null) //這里的二次判斷很有必要啊,在多線程中同時(shí)到達(dá)第一個(gè)if的可能有多個(gè),若此處沒有二次二次判斷,會(huì)導(dǎo)致new singleton()同步執(zhí)行多次。singleton=new lazySingleton();}}return singleton;} }
1)一個(gè)類只能創(chuàng)建一個(gè)實(shí)例
2)構(gòu)造函數(shù)和靜態(tài)變量(加載類時(shí)即初始化)需為private
3)get方法應(yīng)該為public static,可供全局訪問
//懶漢模式 public class lazySingleton {private static lazySingleton singleton=null; //懶,所以就不實(shí)例化了,加載類較快,但是第一次訪問類可能會(huì)有點(diǎn)慢private lazySingleton(){//nothing }public static lazySingleton getSingleton(){if(singleton==null){synchronized (this){if(singleton==null) //這里的二次判斷很有必要啊,在多線程中同時(shí)到達(dá)第一個(gè)if的可能有多個(gè),若此處沒有二次二次判斷,會(huì)導(dǎo)致new singleton()同步執(zhí)行多次。singleton=new lazySingleton();}}return singleton;} }
?
//餓漢模式 public class hungrySingleton {private static final singleton=new hungerySingleton();//此處最好不要丟掉finalprivate hungrySingleton(){//noting }public static hungrySingleton getSingleton(){return singleton();} }參考:Singleton單例模式(懶漢方式和餓漢方式)
? ? ? ? ??單例模式中的懶漢和餓漢模式的區(qū)別
?
轉(zhuǎn)載于:https://www.cnblogs.com/jixiegongdi/p/10604789.html
總結(jié)
以上是生活随笔為你收集整理的单例模式---懒汉模式与饿汉模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OO第一次博客作业
- 下一篇: 一次利用位图索引进行SQL优化的案例