单例模式特点:
1、单例模式只能有一个实例。
2、单例类必须创建自己的唯一实例。
3、单例类必须向其他类提供自己的唯一实例。
单例模式可简单分为饿汉式和懒汉式。
其中饿汉式线程安全,但效率低。
代码如下:
懒汉式线程不安全,效率高。
代码如下:
懒汉式线程不安全,可以通过以下方法使懒汉式变得安全:
1、这种方式会极大的浪费资源,效率比较低,不推荐使用。
代码如下:
2、这种方式看似安全,却存在极大的安全隐患。
代码如下:
3、这是经典的双锁模式,线程是安全的,算是一种使用十分广泛的方法。
代码如下:
除了懒汉式和饿汉式之外,还有一种通过内部类实现的单例模式,其实现机制和懒汉式有些类似,但线程是安全的。
代码如下:
上述的单例模式看似是安全的,但是都可以用Java中一种BUG般的机制创建出实例,那就是反射,接下来要介绍的是一种真正安全的,同时也是最简单的一种单例模式的实现。
枚举方法,代码如下:
以上就是关于Java单例模式的介绍,本人也是才接触Java编程没多久,如果有不正确的地方希望大家第一时间指正,我一定第一时间修改。