Java中的单例模式
饿汉式
- 一般采取饿汉式
class Single1{
private static final Single1 s=new Single1();//唯一的对象,不可以被修改
private Single1(){
}
public static Single1 getInstance(){
return s;
}
}
懒汉式
在多线程模式下容易引发安全问题,所以必须使用同步代码块来解决此问题,但加了synchronized(字节码文件对象)之后每个线程进入代码块时都会判断锁,比较低效,加双重否定语句可以提高它的效率
class Single2 {
private static Single2 s = null;
private Single2() {
}
public static Single2 getInstance() {
if(s==null) {
// Single2.class是字节码文件对象
synchronized (Single2.class) {
if (s == null) {
s = new Single2();
}
}
}
return s;
}
}