惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
L
LangChain Blog
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
B
Blog RSS Feed
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
D
Docker
B
Blog
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
G
Google Developers Blog
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
大猫的无限游戏
大猫的无限游戏
阮一峰的网络日志
阮一峰的网络日志
U
Unit 42

博客园 - CoderDream

[设计模式]模板模式 Windows8下通过IPv4地址访问Tomcat RESTful最佳实践之基于 jersey 的增删改查 Maven 版 JPA 最佳实践 Android项目实战手机安全卫士(02) Android项目实战手机安全卫士(01) 推荐十一个很酷的实用网站 类 ObjectOutputStream的writeObject()方法的中英文对照 2006.08.21网摘 20060818网摘 20060702 长沙职位信息 20060702 网摘 20060630 网摘 Eclipse 入门与提高 第01章 基础知识 今天答辩, 第二阶段(标准阶段)已经过去了! 只剩下最后4个月了! 亿阳信通股份有限公司 J2EE软件设计工程师 上海掌上灵通咨询有限公司 Java软件开发工程师 20060519网摘
[设计模式]单例模式
CoderDream · 2016-03-29 · via 博客园 - CoderDream

应用场景

如果要保证系统里一个类最多只能存在一个实例时,我们就需要单例模式。这种情况在应用中经常碰到,例如缓存池、数据库连接池、线程池、一些应用服务实例等。在多线程环境中,为了保证实例的唯一性其实并不简单。

最简单的单例

源代码

Singleton.java

package pattern.part2.chapter3;

public class Singleton {
    private static Singleton instance = new Singleton();

    // other useful fields...

    private Singleton() {
    }

    public static Singleton getInstance() {
        return instance;
    }

    // other useful methods...
}

代码注解

Singleton类只有一个构造方法,它是被private修饰的,客户对象无法创建该类实例。
我们为此单例实现的全局访问点是public static Singleton getInstance()方法。
注意:instance变量是私有的,外界无法访问。

此实现是线程安全的,当多个线程同时去访问该类的getInstance()方法时,不会初始化多个不同的对象,这是因为,JVM(Java Virtual Machine)在加载此类时,对于static属性的初始化只能由一个线程执行且仅一次。