为了账号安全,请及时绑定邮箱和手机立即绑定

单例模式

标签:
Android

//恶汉式

class Single

{

private Single(){}

private static final Single s=new Single();

public static Single getInstance(){

return s;

}

}

//懒汉式

class Single2

{

//第一步:创建一个私有的构造方法,使外界无法调用

private Single(){}

//volatile  一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就    //具备了两层语义:

//1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这//新值对其他线程来说是立即可见的。

//2)禁止进行指令重排序。

//第二步:创建一个私有的静态的本类对象,供外界使用,但不能直接调用

private static volatile Single s=null;

//第三步:为外界提供获得本类唯一对象的静态方法

public static Single getInstance(){

if(s==null){

                       //当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时  //间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。

synchronized(Single.class){

if(s==null){

s=new Single();

}

}

}

return s;

}

}

demo:

class UserInfoBean {

   private String userid;

   private String token;

   private String username;

   private UserInfoBean(){

   }

   private static  volatile  UserInfoBean userInfoBean=null;

   public static UserInfoBean getInstance(){

       if(userInfoBean==null){

           synchronized (UserInfoBean.class){

               if(userInfoBean==null){

                   userInfoBean=new UserInfoBean();

               }

           }

       }

       return userInfoBean;

   }

   public String getUserid() {

       return userid;

   }

   public void setUserid(String userid) {

       this.userid = userid;

   }

   public String getToken() {

       return token;

   }

   public void setToken(String token) {

       this.token = token;

   }

   public String getUsername() {

       return username;

   }

   public void setUsername(String username) {

       this.username = username;

   }

}

原文链接:http://www.apkbus.com/blog-160625-68362.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消