在面试过程中,经常会碰见让自己写一个单列,在这边写两个仅供参考
第一种,也是最简单的,使用静态方法创建唯一的实例,饿汉式;
public class Demo(){
//静态属性只有一份
//静态的属性,类一加载就初始化
private static User user=new User();
//构造方法私有
private User(){
};
//提供一个获取实例的静态方法
public static User getUsr(){
return user
}
public static void main(String [] args){
User u=User.getUsr();
User u2=User.getUsr();
system.out(u);
system.out(u1);
}
}
第二种:懒汉式,静态属性不利己初始化,程序调用式,才会执行,所以叫懒汉式,注意的式多线程情况下懒汉式不能保证单例
public class User2(){
/静态的属性只有一份
private static User us;
//构造方法私有
private User();
//提供一个实例的静态方法
public static User getUser(){
if(usr==null){
usr=new User();
}
return usr;
}
}
第三种 ,加锁的机制
public class User2(){
/静态的属性只有一份
private static User us;
//构造方法私有
private User();
//提供一个实例的静态方法
public static User getUser(){
if(usr==null){
//同步代码块
syschronized(User.class){
if(usr==null){
usr=new User();
}
}
}
return usr;
}
}