Java单例模式之最优解分析【为何说是最优解】
2024-09-22 05:15:18
代码如下
/**
*
* @ClassName: SingletionStaticInner
* @Description: TODO【单例模式之最优解】
* @author shundong.wu
* @date 2019年2月12日
* 线程安全
*/
class SingletonStaticInner {
private SingletonStaticInner() { }
private static class SingletonInner {
private static SingletonStaticInner singletonStaticInner = new SingletonStaticInner();
}
public static SingletonStaticInner getInstance() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return SingletonInner.singletonStaticInner;
}
}
为何说是最优解呢?
可以看到使用这种方式我们没有显式的进行任何同步操作,那他是如何保证线程安全呢?和饿汉模式一样,是靠JVM保证类的静态成员只能被加载一次的特点,这样就从JVM层面保证了只会有一个实例对象。那么问题来了,这种方式和饿汉模式又有什么区别呢?不也是立即加载么?实则不然,加载一个类时,其内部类不会同时被加载。一个类被加载,当且仅当其某个静态成员(静态域、构造器、静态方法等)被调用时发生。
——————————————————新年快乐——————————————
来吧 来吧 作者学粗才浅 尽管骚扰【邮箱 shundong106@icloud.com】
最新文章
- Java学习笔记14---使用标志位控制循环
- 你必须知道的指针基础-1.预备篇:搭建GCC开发环境
- ARM指令教程
- 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)
- php json_encode中文unicode问题
- 使用Hibernate命名查询
- 如何用JAVA生成注册序列号
- [Flux] 3. Actions
- Windows系统安装MySQL
- EhCache 在集群环境中使用缓存系统
- Django用普通user对象登录的必须准备步骤
- DPDK - gsg文档(介绍与编译)
- 小心错误使用EasyUI 让网站性能减半
- js字符串方法汇总
- echarts横向柱状图如果想打开网址
- MySQL-死锁查询
- Remote 桌面的win2003 servre端设定
- 九度 1464:Hello World for U
- Java并发编程原理与实战四:线程如何中断
- maven指定本地的文件包