一、前言
单例模式在设计模式中使用的较多,也是我学习设计模式最先接触的一个设计模式,虽然容易理解,但是能将其运用于实际应用中却很难。最近也在学习《Java多线程编程核心技术》这本书,如何将多线程与单例模式结合起来是个值得探讨的问题。
二、我对单例模式的理解
单例模式,字面理解就是一个程序中对于一个类,只能有一个类的实例。比如在一个应用程序中用来检测当前登录的用户个数(LoginUser类),产生一个实例LoginUser user = new LoginUser();
,对于每一个在调用这个实例来获取当前登录用户个数的应用程序来说,当前登录的人数应该是固定的,每个应用程序获取到的user.size()是一样的才正确,这就是单例模式的简单应用。相反,如果产生了2个实例,在某一时刻有用户退出又有用户登录,可能会导致这2个实例的值不一样,统计到的用户登录人数当然会出错。
三、单例模式与多线程
单例模式又分为饿汉模式和懒汉模式。具体区别为:
(1)**饿汉模式:**在申明对象时立即对其实例化,即在调用方法前,实例已经被创建:private static LoginUser user = new LoginUser();
代码如下:
首先创建实例对象类:
public class MyObject {
//立即加载:饿汉模式
private static MyObject myObject = new MyObject();
private MyObject(){
}
publi