关于Java中的单例模式

一.特点:

①单例类只能有一个实例

②单例类必须自己自己创建自己的唯一实例

③单例类必须给所有其他对象提供这一实例

二.实现方法:

①饿汉式

 public class Singleton1{
    private Singleton1();
    private static Singleton1 single=new Singleton1();
    public static final Singleton1 getInstance(){
        return single;
    }
 }

②懒汉式1(线程不安全)

 public class Singleton1{
    private Singleton1();
    private static Singleton1 single=null;
    public static Singleton1 getInstance(){
        if(single==null){
            single=new Singleton1();
         }    
         return single;
     }
 }

这种方法因为在getInstance方法中没有添加线程锁,所有当有多个线程同时访问该方法时就会产生多个Singleton1实例。

③懒汉式2(线程安全,但是效率不高,即加入线程锁[线程锁的地方会浪费时间,若可以减少判断线程锁即可节约时间])

 public class Singleton1{
    private Singleton1();
    private static Singleton1 single=null;
    public static synchronized Singleton1 getInstance(){
        if(single==null){
            single=new Singleton1();
         }    
         return single;
     }
 }

④懒汉式3(线程安全,效率也高,即双重判断)

  public class Singleton1{
    private Singleton1();
    private static Singleton1 single=null;
    public static Singleton1 getInstance(){
        if(single==null){
            synchronized(Singleton1.class){
                    if(single==null){
                        s=new Singleton1();
                     }
             }    
          }
         return single;
     }
 }
时间: 2024-12-19 21:02:09

关于Java中的单例模式的相关文章

JAVA中的单例模式(采用单例模式定义的类)(转)

1     单例(Singleton)模式:单例模式确保某一个类只有一个 实例,而且该类只能是自己 实例化自己并向其他类公开 这个实例的对象创建 模式 采用单例模式的类:根据单例模式知道其要满足以下三点 1. 确保某一个类只有一个实例 2. 而且自己实例化 3. 并向其他类提供这个实例类 . 2    确保以上三点的所采用的编程策略     * 把构造方法声明为Private.确保只能由自己创建,避免外部创建实例或者被子类继承从而创造额外实例:    * 定义一个私有静态的该类的实例作为该类的数

java中的单例模式与静态类

单例模式与静态类(一个类,所有方法为静态方法)是另一个非常有趣的问题,在<Java中有关单例模式的面试问题>博文中露掉了,由于单例模式和静态类都具有良好的访问性,它们之间有许多相似之处,例如,两者可以直接使用而无须创建对象,都可提交唯一实例,在一个非常高的高度上看起来它们都为是用于同样的任务.由于它们具有较多的相似性,面试官常常会问一些类似为神马使用单例模式替换静态方法?你能使用静态类替换单例模式吗?Java中单例模式与静态的区别有那些?等这样的问题,为回答这些问题,记住他们单例模式和静态方法

Java中的单例模式

Java中的单例模式分为两种:懒汉模式和饿汉模式 懒汉模式代码: 类加载快,在运行时获取对象进度慢 private static Student stu; //创建一个私有的静态学生类对象 private Student(){} //把构造数改成私有的 //单线程 /* public static Student getInstance(){ if(stu==null) // 为空就new一个空间 { stu=new Student(); } return stu; }*/ //双线程 publ

Java中的单例模式(Singleton Pattern in Java)

Introduction 对于系统中的某个类来说,只有一个实例是很重要的,比如只有一个timer和ID Producer.又比如在服务器程序中,配置信息保留在一个文件中,这些配置信息由一个单例对象统一获取,进程中的其他对象通过这个单例对象获取这些配置信息,这种方式能大大简化复杂环境下的配置管理. 所以这个时候一个类里面就只能有一个实例,而且这个实例要易于访问.我当然可以只定义一个全局变量可以保证对象随时都能访问,但是这种方式我依然可以实例化多个instance,而且被不同的对象所持有,不是很妙.

《Java中的单例模式--两种》

1 //单例模式:饿汉式和懒汉式 2 //单例模式 3 4 /* 5 设计模式:解决某一类问题行之有效的解决办法(思想). 6 单例(Singleton):设计模式: 7 学习设计模式必须先弄清楚它是解决什么问题的. 8 9 单例模式是解决什么问题的? 10 可以保证一个类的对象唯一性. 11 12 场景:比如多个程序都要使用一个配置文件中的数据,而且要实现 13 数据共享和交换.必须要将多个数据封装到一个对象中.而且 14 多个程序操作的是同一个对象.那也就是说必须保证这个配置 15 文件的唯

Java中如何实现单例模式

Java中,单例模式通常有2种分类饿汉模式和懒汉模式. 饿汉模式指的是单例实例在类装载时就被创建了. 懒汉方式值的是单例实例在首次使用时才被创建. 无论是饿汉模式还是懒汉模式,都是用了一个静态成员变量来存放真正的实例.并且私有化构造函数,防止被外部实例化. 单例(饿汉模式)代码: public class Singleton {     private final static Singleton INSTANCE = new Singleton();     //私有化构造方法,防止被实例化 

JAVA中的饿汉式和饱汉式单例模式及jdk中Runtime类的单例模式实现方式详解

一.描述 单例模式是一种非常常见的设计模式,即一个类只能有一个对象(实例),一般通过将该类的构造器私有化,来阻止在该类外创建该类的对象,并提供给外界一个唯一的对象(这个对象在该类中创建). java中的单例模式常见的有两种实现方式,一种是恶汉方式,即将该类对象用static休息并且在类加载的时候进行初始化:另一种是饱汉方式,在程序中需要用到该对象的时候才初始化,一旦初始化一次就不会再重新生成该对象. JDK中的Runtime类其实也是一种单例模式,而且其采用的是饿汉的方式. 二.源代码 pack

JAVA设计模式中的单例模式

单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建.这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象.注意:1.单例类只能有一个实例.2.单例类必须自己创建自己的唯一实例.3.单例类必须给所有其他对象提供这一实例. 介绍 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点.主

Java中的五种单例模式实现方法

[代码] Java中的五种单例模式实现方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 package s