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

DMIT(季度$28.88)调整洛杉矶CN2 GIA优化端口

对于DMIT商家已经关注有一些时候,看到不少的隔壁朋友们都有分享到,但是这篇还是我第一次分享这个服务商。根据看介绍,DMIT是一家成立于2017年的美国商家,据说是由几位留美学生创立的,数据中心位于香港、伯力G-Core和洛杉矶,主打香港CN2直连云服务器、美国CN2直连云服务器产品。最近看到DMIT商家有对洛杉矶CN2 GIA VPS端口进行了升级,不过价格没有变化,依然是季付28.88美元起。...

PhotonVPS:美国Linux VPS半价促销2.5美元/月起,可选美国洛杉矶/达拉斯/芝加哥/阿什本等四机房

photonvps怎么样?photonvps现在针对旗下美国vps推出半价促销优惠活动,2.5美元/月起,免费10Gbps DDoS防御,Linux系统,机房可选美国洛杉矶、达拉斯、芝加哥、阿什本。以前觉得老牌商家PhotonVPS贵的朋友可以先入手一个月PhotonVPS美国Linux VPS试试了。PhotonVPS允许合法大人内容,支持支付宝、paypal和信用卡,30天退款保证。Photo...

轻云互联,香港云服务器折后22元/月 美国云服务器 1核 512M内存 15M带宽 折后19.36元/月

轻云互联成立于2018年的国人商家,广州轻云互联网络科技有限公司旗下品牌,主要从事VPS、虚拟主机等云计算产品业务,适合建站、新手上车的值得选择,香港三网直连(电信CN2GIA联通移动CN2直连);美国圣何塞(回程三网CN2GIA)线路,所有产品均采用KVM虚拟技术架构,高效售后保障,稳定多年,高性能可用,网络优质,为您的业务保驾护航。官方网站:点击进入广州轻云网络科技有限公司活动规则:1.用户购...

singleton为你推荐
vga接口定义电脑显示屏VGA是什么意思自定义表情qq自定义表情云计划云计划创富平台有谁了解啊 是骗人的吗?微软操作系统下载微软原版xp系统下载网址是哪个啊?有没有免费就可以下载的?微软操作系统下载微软的系统到哪下载单元测试规范求解,单片机程序的单元测试应该怎么做呢?点心os移动OMS系统跟点心OS系统,他两不是都基于Android改造出来的么?差别在哪?监控插件千里眼监控软件怎么使用啊?监控插件常见的监控软件有哪些embed函数c语言“sqrt函数”的用法是什么?
主机屋免费空间 http500内部服务器错误 魔兽世界台湾服务器 空间出租 鲁诺 网通服务器 申请免费空间 免费蓝钻 空间申请 美国主机 美国vpn代理 此网页包含的内容将不使用安全的https 卡巴斯基免费版下载 卡巴斯基免费版 tracert 内存 ssd nano ddos攻击小组 主机游戏 更多