單例模式分為惡漢式,就是直接在類中new出,直接返回對象,懶漢式是在調用對象時判斷對象是否是null,如果null,先new出,再返回,否則直接返回對象,但是這種方式會線程不安全,所以采用雙重檢查的設計思想,保證線程安全。
package singleton;
public class Teacher3 {
private Teacher3(){}
private static Teacher3 t=null;
public static Teacher3 getTeacher3(){
if(t==null){
synchronized (Teacher3.class) {
if(t==null){
t=new Teacher3();
}
}
}
return t;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
第二種方式,內部類方式
package test;
/**
* 在多線程中使用單例對象的設計模式,內部類
*
*/
public class InnerSingleton {
private static class Singleton{
private static Singleton s=new Singleton();
public void add(){
}
}
public static Singleton getSingleton(){
return Singleton.s;
}
public static void main(String[] args) {
Singleton singleton = InnerSingleton.getSingleton();
singleton.add();
}
}