这是昨天的一道笔试题,也是经常会被考到的,这里直接写一下代码便于以后查看。
1.饿汉式
public class SingleDemo {
private static SingleDemo singleDemo = new SingleDemo();
private SingleDemo() {}
public static SingleDemo getInstance() {
return singelDemo;
}
}
2.懒汉式
public class SingleDemo {
private static SingleDemo singleDemo;
private SingleDemo() {}
public static SingleDemo getInstance() {
if (singleDemo == null) {
singleDemo = new SingleDemo();
}
return singelDemo;
}
}
3.懒汉同步1
public class SingleDemo {
private static SingleDemo singleDemo;
private SingleDemo() {}
public static synchronized SingleDemo getInstance() {
if (singleDemo == null) {
singleDemo = new SingleDemo();
}
return singelDemo;
}
}
4懒汉同步2
public class SingleDemo {
private static SingleDemo singleDemo;
private SingleDemo() {}
public static SingleDemo getInstance() {
if (singleDemo == null) {
synchronized(SingleDemo.class) {
singleDemo = new SingleDemo();
}
}
return singelDemo;
}
}