A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public final class Singleton
{
        private static String name;
        private static String sex;
        private static int age;
        private static Singleton s = null;
        private Singleton(String name, String sex, int age){                // 构造方法
                this.name = name;
                this.sex = sex;
                this.age = age;
        }               
        public static  Singleton getInstance(String name, String sex, int age){
                if(s==null){
                        synchronized(Singleton.class){
                                if(s==null)
                                        s=new Singleton(name,sex,age);
                        }
                }
                return s;
               
        }
        public String toString(){
                return("姓名="+name+"\n性别="+sex+"\n年龄="+age);
        }
       
        public static void main(String[] args)
        {
                Singleton sg1 = Singleton.getInstance("张三","男",20);
                Singleton sg2 = Singleton.getInstance("李四","男",21);
               
                System.out.println(sg1);
                System.out.println(sg2);
        }
}

多线程的应该可以直接调用这个类也能用 但是多线程貌似饿汉式比较好 这个延迟加载有点蛋疼

1 个回复

倒序浏览
双重判定可能存在内存问题导致失效。饿汉式用静态内部类同样可以延迟加载,代码还简单
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马