此文是對《JAVA多線程編程核心技術》的一點總結,如果想要了解具體細節可以去看原書。
第六章 單列模式與多線程
我之前最經常使用的單列:
public class MyObject {
private volatile static MyObject myObject;
private MyObject() {}
//使用雙檢測來解決問題,既保證了不需要同步代碼的異步執行性
//又保證了單列的效果
public static MyObject getInstance() {
if (myObject != null) {
}else {
synchronized (MyObject.class) {
if (myObject == null) {
myObject = new MyObject();
}
}
}
return myObject;
}
}
使用靜態內置類實現單列模式
public class MyObject2 {
//內部類方式
private static class MyObject2Handler {
private static MyObject2 myObject2 = new MyObject2();
}
private MyObject2() {
}
public static MyObject2 getInstance() {
return MyObject2Handler.myObject2;
}
}