java 线程安全的单例_线程安全的单例模式的几种实现
單例模式是常見的設計模式之一:目的是節省內存,限制了實例的個數;有利于java GC回收機制。
單例模式的三個好處:
1.控制資源的使用,通過線程同步來控制資源的并發訪問
2.控制實例的產生個數,來達到節約資源的目的
3.作為通信媒介使用,在不建立連接的情況下,讓兩個不先關的進程和線程之間實現通信
單例模式分類: 餓漢模式(在類加載時便會創建對象);
懶漢模式(在外部第一次請求實例時才會創建實例);
登記式模式
單例模式特點:
1.單例類只有一個實例
2.單例類必須自己創建自己唯一的實例
3.單例類必須自己給其他類提供這一實例
1.懶漢模式:類加載時不會初始化,當外部第一次請求實例時才會創建實例;而且第一次創建后不在創建該實例;
特點是:運行時獲取對象的速度比較慢,但加載的時候比較快,它在整個生命的應用周期只占用一部分資源
//單例模式-懶漢式單例
public classLazySingleton {//私有靜態對象,加載時候不做初始化
private static LazySingleton jjy=null;//私有構造方法,避免外部創建實例
privateLazySingleton(){}/*** 靜態工廠方法,返回此類的唯一實例.
* 當發現實例沒有初始化的時候,才初始化.
*@returnLazySingleton*/
synchronized public staticLazySingleton getJjy(){if(jjy==null){
jjy=newLazySingleton();
}returnjjy;
}
}
2.餓漢模式:類加載時就會初始化,創建實例;
特點是:運行時獲取對象速度比較快,但加載時速度比較慢,會一直占用資源? (程序打開加載比較慢,但運行速度快---從用戶體驗角度來說推薦餓漢)
//單例模式-餓漢式單例
public class EagerSingleton {
//私有靜態對象,加載時候不做初始化
private static EagerSingleton jjy=new EagerSingleton();
// 私有構造方法,避免外部創建實例
private EagerSingleton(){}
/**
* 靜態工廠方法,返回此類的唯一實例.
*
*
*/
synchronized public static EagerSingleton getJjy(){
return jjy;
}
}
使用場景:數據庫連接池;網站計數器;
總結
以上是生活随笔為你收集整理的java 线程安全的单例_线程安全的单例模式的几种实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql8.0设置用户权限_mysql
- 下一篇: cstring越界_CString和ch