在面试过程中,经常会碰见让自己写一个单列,在这边写两个仅供参考
第一种,也是最简单的,使用静态方法创建唯一的实例,饿汉式;
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;
}
}
博客提到面试中常被要求手写单例,给出两个单例示例供参考,聚焦于信息技术领域面试时单例代码书写问题。
630

被折叠的 条评论
为什么被折叠?



