之前面试了一家公司,主要在围绕单例展开的一个case:
[list=1][b]Q1: 写一个单例:[/b]
[list=2][b]Q2: 写一个lazy load的单例:[/b]
[list=3]Q3: 写一个线程安全的lazy load的单例:
[list=4]Q4: 写一个轻量级的线程安全的lazyload的单例:
[/list]
[list=1][b]Q1: 写一个单例:[/b]
public class Singleton{
private static final Singleton instance = new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return instance;
}
}
[list=2][b]Q2: 写一个lazy load的单例:[/b]
public class Singleton{
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
[list=3]Q3: 写一个线程安全的lazy load的单例:
public class Singleton{
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
instance = new Singleton();
}
}
return instance;
}
}
[list=4]Q4: 写一个轻量级的线程安全的lazyload的单例:
public class Singleton{
private static Singleton instance;
private static AutomaticInteger count = new AutomaticInteger(0);
private Singleton(){
}
public static Singleton getInstance(){
if(count ==0 && instance == null){
synchronized(Singleton.class){
instance = new Singleton();
count.increment();
}
}
return instance;
}
}
[/list]