java 单例

本贴最后更新于 1121 天前,其中的信息可能已经时移俗易

单例模式特征

  1. 构造方法不对外开放,一般是 private
  2. 通过一个静态方法或者枚举返回单例类的对象
  3. 注意多线程场景
  4. 注意单例类对象在反序列化时不会重新创建新对象

实现

1.懒汉式

在第一次调用的时候实例化自己(线程不安全),在创建单例过程中访问了 getInstance 便会再创建一个,系统中出现两个 Instance 对象。

2.饿汉式

静态 intstance ,系统运行时就创建。

3.懒汉 + 锁

双重校验(sync 锁),解决多线程访问的对象问题,问题:指令重排,导致双重检查失效的问题

4.静态内部类单

static class holder 中再放 static Instance

5.枚举类单例

通过枚举类中存放一个对象

6.容器实现单例

利用 hashmap 的线程安全性特点

常用位置 context.getService(),在获取系统服务时(单例),时对外提供就是这样.

系统提供了 Singleton 模板类,实现在 AMS 的获取

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...