/**
* 單例設計模式
* @author codeMan
*
*/
public class Jvm {
//懶漢式,懶的建立,建立一個靜態變量,能夠仿照Runtime的JDk看看
private static Jvm instance=null;
//使用private,外面不能 建立對象,
private Jvm(){
}
//
public static Jvm getInstance(){
if(null==instance){
//雙重判斷,提升效率,對於高併發的時候,同步代碼塊,防止多個對象共享資源出現線程安全問題
synchronized (Jvm.class) {
if(null==instance){
instance=new Jvm();
}
}
}
return instance;
}
}
//使用內部類建立對象,這樣的話能夠延遲加載,咱們知道虛擬機是類用到的時候才加載,一開始不會加載這個內部類
class MyJvm{
private static class JvmMap{
private static MyJvm instance=new MyJvm();
}
private MyJvm(){
}
public static MyJvm getInstance(){
return JvmMap.instance;
}
}設計模式