分享免费的编程资源和教程

网站首页 > 技术教程 正文

JAVA中的单例模式 java单例模式有几种

goqiw 2024-10-02 22:07:36 技术教程 12 ℃ 0 评论

在java中,单例模式的实现方法有如下几种:

1.饿汉模式

所为饿汉模式,即一开始就创建一个静态的对象,之后该对象一直存在。这种模式不会有线程安全问题。

2.懒汉模式

对于饿汉模式,优点在于实现简单。但是存在一个问题就是 instance 只要 Singleton1被加载就会被创建到static所在的静态方法区。如实现数据库连接池等情况,用这种方法一上来就要创建数据库的连接资源,实际系统中暂不使用。这就造成了资源的浪费。因此,对于这种情况,出现了与之对应的懒汉模式。

即一开始并不创建对象,待需要使用时再new。

这是大家想到的最常用的懒汉模式的写法。但是问题来了,上述模式在多线程的情况下是线程不安全的!也就是说,如果有两个线程,同时getInstance(),同时都会判断instance的值为null。这种情况下会创建多个实例。

为了解决上述问题,我们引入了锁:

上面这种做法,确实解决了线程安全问题,但是带来了一个更加不好的问题,那就是每一次请求都会加锁!这样会严重影响性能。更好的做法是采用双重检查机制:

这样才完美解决了单例模式的坑。当然,如果阅读过《effective java》这本书,就会知道对于单例模式还有一种更简单的写法,那就是枚举。

3.枚举单利

因为在java中,枚举天然实现了单例模式。

可以很容易的将上述枚举类改造之后运用到所需的场景中。

作品来源:简书

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群346942462,我们一起学Java!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表