延迟加载吗?   否 延迟加载吗?   是 延迟加载吗?   是 JDK 版本:JDK1.5 起
单例模式
源码刨析(RunTime.java)
package java.lang; public class Runtime { //1、创建静态的全局唯一的对象 private static Runtime currentRuntime = new Runtime(); //2、私有化构造方法,不让外部来调用 private Runtime() {} //3、通过自定义的静态方法获取实例 public static Runtime getRuntime() { return currentRuntime; } } 单例模式的几种实现方式
1. 饿汉式
 多线程安全吗?  安全
 实现难度?  简单
 描述:  这种方式比较常用,但容易产生垃圾对象。
 优点:没有加锁,执行效率会提高。
 缺点:类加载时就初始化,浪费内存。public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() { return instance; } } 2. 懒汉式, 线程不安全
 多线程安全吗?  不安全
 实现难度?  简单
 描述:  这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) {            instance = new Singleton(); } return instance; } } 3. 懒汉式, 线程安全
 多线程安全吗?  安全
 实现难度?  简单
 描述:  这种方式具备很好的 lazy loading,能够在多线程中很好的工作,但是,效率很低,99% 情况下不需要同步。
 优点:第一次调用才初始化,避免内存浪费。
 缺点:必须加锁 synchronized 才能保证单例,但加锁会影响效率。public class Singleton { private static Singleton instance; private Singleton (){} // 必须加同步锁 public static synchronized Singleton getInstance() { if (instance == null) {            instance = new Singleton(); } return instance; } } 4、双检锁/双重校验锁(DCL,即 double-checked locking)
 延迟加载吗?   是
 多线程安全吗?  安全
 实现难度?  有点难
 描述:  这种方式采用双锁机制,安全且在多线程情况下能保持高性能。public class Singleton { private volatile static Singleton singleton; private Singleton (){} public static Singleton getSingleton() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) {                 singleton = new Singleton(); } } } return singleton; } } 
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
 官方软件产品操作指南 (170)
官方软件产品操作指南 (170)