singleton什么是singleton单例模式

singleton  时间:2021-06-04  阅读:()

写一个Singleton类出来,并详细解释每一条语句的作用。

常用的有2种方法: 1)通过成员变量来访问 public class MySingleton { public static final MySingleton singleton = new MySingleton();();//第一次加载类的时候就实例化,static以保证所有的class都使用这一个实例 private MySingleton() { } } 2)这个singleton是不能在外部直接new 出来的。

只能通过MySingleton.getInstance()来访问 public class MySingleton { private static MySingleton signleton; private MySingleton(){// } public static synchronized MySingleton getInstance(){//外部构造实例的方法 if(signleton == null){//如果还不存在,在本类内部实例化一个 return new MySingleton(); }else{ return signleton;//如果已经存在,返回已经存在的实例 } } } 第二种代码看起来舒服点,也是我经常用的,推荐 2楼见笑了,是copy的时候错了。

JAVA问题:singleton是什么意思?

是java开发中常用设计模式的一种。

java的设计模式有一百多种常用的有23种。

就单例模式(也叫单汉模式)来说有饿汉、懒汉之分。

它们的区别是前者不考虑线程直接通过静态方法返回对象,而后者反之。

如何写一个Singleton(单例模式)?

使用线程单列模式获.hibernate.Session对象 .hibernate.Session; .hibernate.SessionFactory; .hibernate.cfg.Configuration;public class HibernateSessionFactory { private static Configuration conf; private static SessionFactory sf; private static ThreadLocal<Session> tl = new ThreadLocal<Session>(); //ThreadLocal<Session>内部是Map结构,用线程id作为key值,用来存放多个Session对象 static { conf = new Configuration(); conf.configure(); sf = conf.buildSessionFactory(); } public static Session getSession() { Session session = tl.get();//以当前线程的id作为Key,取出一个Session对象 if (session == null) { session = sf.openSession();//如果为空,则获取一个新的Session对象,并存入tl中 tl.set(session); } return session; } public static void closeSession() {//关闭一个session Session session = tl.get();//以当前线程的id作为Key,取出一个Session对象 if (session != null) {//如果不为空,怎关闭 session.close(); tl.set(null); } } }

JAVA单例模式的几种实现方法

JAVA 单例模式的几种实现方法 1.饿汉式单例类 package pattern.singleton; // 饿汉式单例类 . 在类初始化时,已经自行实例化 public class Singleton1 { // 私有的默认构造子 private Singleton1() {} // 已经自行实例化 private static final Singleton1 single = new Singleton1(); // 静态工厂方法 public static Singleton1 getInstance() { return single; } } 2. 懒汉式单例类 package pattern.singleton; // 懒汉式单例类 . 在第一次调用的时候实例化 public class Singleton2 { // 私有的默认构造子 private Singleton2() {} // 注意,这里没有 final private static Singleton2 single; // 只实例化一次 static { single = new Singleton2(); } // 静态工厂方法 public synchronized static Singleton2 getInstance() { if (single == null ) { single = new Singleton2(); } return single; } } 在上面给出懒汉式单例类实现里对静态工厂方法使用了同步化,以处理多线程环境。

有些设计师在这里建议使用所谓的 " 双重检查成例 ". 必须指出的是, " 双重检查成例 " 不可以在 Java 语言中使用。

不十分熟悉的读者,可以看看后面给出的小节。

同 样,由于构造子是私有的,因此,此类不能被继承。

饿汉式单例类在自己被加载时就将自己实例化。

即便加载器是静态的,在饿汉 式单例类被加载时仍会将自己实例化。

单从资源利用效率角度来讲,这个比懒汉式单例类稍差些。

从速度和反应时间角度来讲, 则 比懒汉式单例类稍好些。

然而,懒汉式单例类在实例化时,必须处 理好在多个线程同时首次引用此类时的访问限制问题,特别是当单例类作为资源控制器,在实例化时必然涉及资源初始化,而资源 初始化很有可能耗费时间。

这意味着出现多线程同时首次引用此类的机率变得较大。

饿汉式单例类可以在 Java 语言内实现, 但不易在 C++ 内实现,因为静态初始化在 C++ 里没有固定的顺序,因而静态的 m_instance 变量的初始化与类的加载顺序没有保证,可能会出问题。

这就是为什么 GoF 在提出单例类的概念时,举的例子是懒 汉式的。

他们的书影响之大,以致 Java 语言中单例类的例子也大多是懒汉式的。

实际上,本书认为饿汉式单例类更符e69da5e887aae799bee5baa631333335336530合 Java 语 言本身的特点。

3. 登记式单例类 . package pattern.singleton; import java.util.HashMap; import java.util.Map; // 登记式单例类 . // 类似 Spring 里面的方法,将类名注册,下次从里面直接获取。

public class Singleton3 { private static Map<String,Singleton3> map = new HashMap<String,Singleton3>(); static { Singleton3 single = new Singleton3(); map.put(single.getClass().getName(), single); } // 保护的默认构造子 protected Singleton3(){} // 静态工厂方法 , 返还此类惟一的实例 public static Singleton3 getInstance(String name) { if (name == null ) { name = Singleton3. class .getName(); System.out.println("name == null"+"--->name="+name); } if (map.get(name) == null ) { try { map.put(name, (Singleton3) Class.forName(name).newInstance()); } catch (InstantiationException e) { e.printStackTrace(); } catch (essException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } return map.get(name); } // 一个示意性的商业方法 public String about() { return "Hello, I am RegSingleton."; } public static void main(String[] args) { Singleton3 single3 = Singleton3.getInstance( null ); System.out.println(single3.about()); } }

什么是singleton单例模式

singleton 英[?s??glt?n] 美[?s??ɡ?lt?n] n. 一个,独身,单独; [网络] 单例; 单例模式; 单件; [例句]Bank is a 38-year-old singleton who grew up in Philadelphia. 班克是一名38岁的单身汉,在费城长大。

[其他] 复数:singletons

justhost:“第4次VPS测评”,8.3元/月,200M带宽,不限流量,KVM虚拟,4个俄罗斯机房应有适合你的

justhost.ru官方来消息说已经对网络进行了比较全面的优化,针对中国电信、联通、移动来说,4个机房总有一个适合中国用户,让站长进行一下测试,这不就有了这篇有关justhost的VPS的第四次测评。本帖主要关注的是网络,对于其他的参数一概不管! 官方网站:https://justhost.ru 最低配VPS:8.3元/月,KVM,512M内存,5G硬盘,200M带宽,不限流量 购买链接:...

ucloud香港服务器优惠活动:香港2核4G云服务器低至358元/年,968元/3年

ucloud香港服务器优惠降价活动开始了!此前,ucloud官方全球云大促活动的香港云服务器一度上涨至2核4G配置752元/年,2031元/3年。让很多想购买ucloud香港云服务器的新用户望而却步!不过,目前,ucloud官方下调了香港服务器价格,此前2核4G香港云服务器752元/年,现在降至358元/年,968元/3年,价格降了快一半了!UCloud活动路子和阿里云、腾讯云不同,活动一步到位,...

香港 1核1G 29元/月 美国1核 2G 36元/月 快云科技

快云科技: 11.11钜惠 美国云机2H5G年付148仅有40台,云服务器全场7折,香港云服务器年付388仅不到五折 公司介绍:快云科技是成立于2020年的新进主机商,持有IDC/ICP/ISP等证件资质齐全主营产品有:香港弹性云服务器,美国vps和日本vps,香港物理机,国内高防物理机以及美国日本高防物理机官网地址:www.345idc.com活动截止日期为2021年11月13日此次促销活动提供...

singleton为你推荐
刘建平刘建平的履历avb医学avb是什么意思草莓派如何最简单的制作出好吃的草莓派?企业资源管理系统企业人力资源管理系统的重要性?人肉搜索引擎怎样使用人肉搜索引擎?自定义表情搜狗输入法怎么添加自定义表情自定义表情qq自定义表情数据挖掘项目将来想从事统计分析和数据挖掘,需要哪些技能遗传算法实例求助fortran语言编写的混合遗传算法例子那位大哥大姐有?什么是生态系统生态系统的基础是什么?
100m虚拟主机 北京虚拟主机租用 美国linux主机 美国加州vps 域名服务dns的主要功能为 火山主机 2019年感恩节 80vps namecheap 鲨鱼机 特价空间 xfce 铁通流量查询 e蜗 腾讯云分析 asp免费空间申请 100m独享 服务器托管什么意思 metalink 33456 更多