一.单例模式的应用场景
1.资源共享的情况下,避免由于资源操作造成的性能损耗,比如配置文件的加载
2.控制资源的情况下,方便资源之间的通信,比如数据库连接池,线程池
二.代码基本模块
public class MyObject {
// 饿汉模式,在类初始化的时候立即加载
private static MyObject myObject = new MyObject();
// 私有构造方法,单例模式必须
private MyObject() {
}
public static MyObject getInstance() {
return myObject;
}
}
测试类
public static class Test {
public static void main(String[] args) {
ExecutorService pool = Executors.newFixedThreadPool(8);
for(int i = 0; i < 10; i++) {
pool.submit(new Runnable() {
@Override
public void run() {
System.out.println(MyObject.getInstance());
}
});
}
pool.shutdown();
}
}
执行结果
mif.tools.MyObject@67309ce5
mif.tools.MyObject@67309ce5
mif.tools.MyObject@67309ce5
mif.tools.MyObject@67309ce5
mif.tools.MyObject@67309ce5
mif.tools.MyObject@67309ce5
mif.tools.MyObject@67309ce5
mif.tools.MyObject@67309ce5
mif.tools.MyObject@67309ce5
mif.tools.MyObject@67309ce5
三.优缺点
优点:线程安全
缺点:无法延迟加载