JAVA单例模式:懒汉式,饿汉式

今天复习了一下java的单例模式,写了懒汉式和饿汉式的实现例子。代码如下:

 

1.懒汉式单例

package com.lf.shejimoshi;

/**
 * @classDesc: 类描述:(懒汉式单例测试类) 
 * @author baobaolan
 * @createTime 2018年1月10日  
 * @version v1.0
 */
public class SingletonTest {
    /**
     * @functionDesc: 功能描述:(测试懒汉式单例模式) 
     * @author baobaolan
     * @createTime 2018年1月10日  
     * @version v1.0
     */
    public static void main(String[] args) {
        Student s1 = Student.getStudent();
        Student s2 = Student.getStudent();
        System.out.println(s1==s2);
    }    
    
}

/**
 * @classDesc: 类描述:(学生类) 
 * @author baobaolan
 * @createTime 2018年1月10日  
 * @version v1.0
 */
class Student{
    
    //定义全局变量
    private static Student student;
    
    //私有化构造函数
    private Student(){
        
    }
    
    /**
     * @functionDesc: 功能描述:(对外暴露方法) 
     * @author baobaolan
     * @createTime 2018年1月10日  
     * @version v1.0
     */
    public static Student getStudent(){
        if(student==null){
            //加上同步锁,保证线程安全
            synchronized(Student.class){
                student = new Student();
            }
        }
        return student;
    }
}

 

2.饿汉式单例

package com.lf.shejimoshi;

/**
 * @classDesc: 类描述:(测试类) 
 * @author baobaolan
 * @createTime 2018年1月10日  
 * @version v1.0
 */
public class Singleton2Test {
    
    public static void main(String[] args) {
    
        Teacher teacher1 = Teacher.getTeacher();
        Teacher teacher2 = Teacher.getTeacher();
        System.out.println(teacher1==teacher2);
        
    }
    
}

/**
 * @classDesc: 类描述:(饿汉式单例) 
 * @author baobaolan
 * @createTime 2018年1月10日  
 * @version v1.0
 */
class Teacher{
    //类加载的时候初始化一次
    private static final Teacher teacher = new Teacher();
    //私有化构造函数
    private Teacher(){
        super();
    }
    /**
     * @functionDesc: 功能描述:(对外暴露的方法) 
     * @author baobaolan
     * @createTime 2018年1月10日  
     * @version v1.0
     */
    public static Teacher getTeacher(){
        return teacher;
    }
    
}

 

3.总结

  懒汉式线程不安全,需要加上同步锁,同步锁影响了程序执行效率。

      饿汉式天生线程安全,类加载的时候初始化一次对象,效率比懒汉式高。

 

转载于:https://www.cnblogs.com/leifei/p/8258949.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值