package test;
public class MyObject {
private static MyObject myObject = new MyObject();
private MyObject() {
}
public static MyObject getInstance() {
return myObject;
}
}
package extthread;
import test.MyObject;
public class MyThread extends Thread {
@Override
public void run(){
System.out.println(MyObject.getInstance().hashCode());
}
}
package test.run;
import extthread.MyThread;
public static void main(String[] args) {
MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
MyThread t3 = new MyThread();
t1.start();
t2.start();
t3.start();
}
//输出结果如下,其中hashCode为同一个值,说明对象是同一个,也就实现了立即加载型单例设计模式
29115481
29115481
29115481
6.2 延迟加载/“懒汉模式”
延迟加载就是在调用get()方法时实例才被创建,常见的办法就是在get()方法中new实例化。
package test;
public class MyObject {
private static MyObject myObejct;
private MyObject() {
}
public static MyObject getInstance() {
if (myObject != null) {
} else {
myObject = new MyObject();
}
return myObject;
}
}