介绍:懒汉式和饿汉式,
懒汉式涉及多线程和效率,而饿汉式只涉及效率。
package synchronize;
import java.security.PrivateKey;
/**
* 懒汉式:
* 1)构造器私有化
* 2)声明私有的静态属性
* 3)对外提供访问属性的静态方法,确保该对象存在
*
*/
public class MyJvm {
private static MyJvm instance;
private MyJvm(){
}
public static MyJvm getInstance(){
if(instance==null){ //提高效率
synchronized (MyJvm.class) {
if(null==instance){ //安全
instance=new MyJvm();
}
}
}
return instance;
}
}
/**
* 饿汉式
* 1)构造器私有化
* 2)声明私有的静态属性,同时创建该对象
* 3)对外提供访问属性的静态方法
*/
class MyJvm2{
private static MyJvm2 instance=new MyJvm2();
private MyJvm2(){
}
public static MyJvm2 getInstance(){
return instance;
}
}
//提高饿汉式效率
class MyJvm3{
//类在加载的时候加载,延缓了加载时间(属性一定会被初始化,方法只有在调用的时候才使用)
private static class JvmHolder{
private static MyJvm3 instance=new MyJvm3();
}
private MyJvm3(){
}
public static MyJvm3 getInstance(){
return JvmHolder.instance;
}
}