黑马程序员—懒汉式和饿汉式

                                         ----------------------    android培训      java培训   期待与您交流!    ----------------------   
                                            

package com.be.six;
/**
 * 开发一般用饿汉式,因为安全,简单
 * @author zjw
 *
 */
public class Singlton {
 public static void main(String args[]){
  //饿汉式用法
  Singleton s=Singleton.getInstance();
  s.setName("ffffffffffff");
  s.setName("fffffddddddddddd");
  s.test();
  //懒汉式用法
  Singleton1 s1=Singleton1.getInstance();
  s1.setAge(33);
  s1.getAge();
  Singleton1 s2=Singleton1.getInstance();
  s1.setAge(66);
  s1.getAge();
 }
}
/**
 * 饿汉式
 * Singleton一进内存,就已经创建好了对象
 * @author zjw
 *
 */
class Singleton{
 private String name;
 private Singleton(){}
 private static Singleton s=new Singleton();
 public static Singleton getInstance(){
  return s;
 }
 public void test(){
  System.out.println("name:"+name);
 }
 public void setName(String name){
  this.name=name;
  this.test();
 }
}
/**
 * 懒汉式
 * Singleton1进内存,对象还没存在,只有调用了getInstance方法时,才建立对象,这就是延迟加载
 * 缺点:
 *  容易出错,
 * 解决方案1,加同步关键字:Synchronized,但是加完后,程序执行效率会降低的很多
 * 最终解决方案
 */
class Singleton1{
 private int age;
 private Singleton1(){}
 private static Singleton1 s=null;
 public static Singleton1 getInstance(){
  if(null==s){
   synchronized(Singleton1.class){//加锁         这是最终解决方案,双重判断,提高效率
    if(null==s){
     s=new Singleton1();
    }
   }
  }
  return s;
 }
 public int getAge(){
  System.out.println("age:"+age);
  return age;
 }
 public void setAge(int age){
  this.age=age;
 }
}


 

                                          ----------------------    android培训      java培训   期待与您交流!    ----------------------   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值