当前位置: 首页 > news >正文

网站ui设计报价单江苏优质网站制作公司

网站ui设计报价单,江苏优质网站制作公司,做招商加盟的网站,校网站建设方案单例#xff0c;大家肯定都不陌生#xff0c;这是Java中很重要的一个设计模式。稍微了解一点单例的朋友也都知道实现单例是要考虑并发问题的#xff0c;一般情况下#xff0c;我们都会使用synchronized来保证线程安全。那么#xff0c;如果有这样一道面试题#xff1a;不… 单例大家肯定都不陌生这是Java中很重要的一个设计模式。稍微了解一点单例的朋友也都知道实现单例是要考虑并发问题的一般情况下我们都会使用synchronized来保证线程安全。那么如果有这样一道面试题不使用synchronized和lock如何实现一个线程安全的单例你该如何回答C类应聘者可以使用饿汉模式实现单例。如public class Singleton { private static Singleton instance new Singleton();private Singleton (){}public static Singleton getInstance() {return instance;} } 还有部分程序员可以想到饿汉的变种public class Singleton {private Singleton instance null;static {instance new Singleton();}private Singleton (){}public static Singleton getInstance() {return this.instance;} } 使用static来定义静态成员变量或静态代码借助Class的类加载机制实现线程安全单例。面试官除了这种以外还有其他方式吗B类应聘者除了以上两种方式还有一种办法就是通过静态内部类来实现代码如下public class Singleton {private static class SingletonHolder {private static final Singleton INSTANCE new Singleton();}private Singleton (){}public static final Singleton getInstance() {return SingletonHolder.INSTANCE;} } 这种方式相比前面两种有所优化就是使用了lazy-loading。Singleton类被装载了但是instance并没有立即初始化。因为SingletonHolder类没有被主动使用只有显示通过调用getInstance方法时才会显示装载SingletonHolder类从而实例化instance。面试官除了这种以外还有其他方式吗A类应聘者除了以上方式还可以使用枚举的方式如public enum Singleton {INSTANCE;public void whateverMethod() {} } 这种方式是Effective Java作者Josh Bloch 提倡的方式它不仅能避免多线程同步问题而且还能防止反序列化重新创建新的对象可谓是很坚强的壁垒。面试官以上几种答案其实现原理都是利用借助了类加载的时候初始化单例。即借助了ClassLoader的线程安全机制。所谓ClassLoader的线程安全机制就是ClassLoader的loadClass方法在加载类的时候使用了synchronized关键字。也正是因为这样 除非被重写这个方法默认在整个装载过程中都是同步的也就是保证了线程安全。所以以上各种方法虽然并没有显示的使用synchronized但是还是其底层实现原理还是用到了synchronized。面试官除了这种以外还有其他方式吗A类应聘者还可以使用Java并发包中的Lock实现面试官本质上还是在使用锁不使用锁的话有办法实现线程安全的单例吗A类面试者有的那就是使用CAS。CAS是项乐观锁技术当多个线程尝试使用CAS同时更新同一个变量时只有其中一个线程能更新变量的值而其它线程都失败失败的线程并不会被挂起而是被告知这次竞争中失败并可以再次尝试。实现单例的方式如下public class Singleton {private static final AtomicReferenceSingleton INSTANCE new AtomicReferenceSingleton();private Singleton() {}public static Singleton getInstance() {for (;;) {Singleton singleton INSTANCE.get();if (null ! singleton) {return singleton;}singleton new Singleton();if (INSTANCE.compareAndSet(null, singleton)) {return singleton;}}} } 面试官这种方式实现的单例有啥优缺点吗A类面试者用CAS的好处在于不需要使用传统的锁机制来保证线程安全,CAS是一种基于忙等待的算法,依赖底层硬件的实现,相对于锁它没有线程切换和阻塞的额外消耗,可以支持较大的并行度。CAS的一个重要缺点在于如果忙等待一直执行不成功(一直在死循环中),会对CPU造成较大的执行开销。另外如果N个线程同时执行到singleton new Singleton();的时候会有大量对象创建很可能导致内存溢出。面试官你被录取了【End】最后为了回馈读者朋友老王准备了500元的微信红包点击抽奖领取关注下方二维码订阅更多精彩内容。转发朋友圈是对我最大的支持。
http://wiki.neutronadmin.com/news/242333/

相关文章:

  • 网站改版seo建议wordpress 添加 博文
  • 一个人网站运营怎么做开锁换锁做网站
  • 最好的网站建设系统济南网站建设有限公司
  • 商务网站建设实验书网站建设是什么专业啊
  • 秦皇岛网站建设系统推荐桦甸网站建设
  • 男女做视频观看网站wordpress教程文档下载
  • 软件开发培训机构找极客时间西安优化网站公司
  • 淘宝做网站的都是模板万城建设网站
  • 网站开发获取用户微信号登录做商城外贸网站
  • 如何通过网站后台修改网站电商网站设计规范
  • 管理网站 开发黔西南做网站的有几家
  • 浙江省建设厅 网站是多少怎么看网站开发的发展
  • 网站备案时间也太慢了百度云搜索引擎入口百度网盘
  • 阿里云有主体新增网站简历网站有哪些
  • 用js做网站登录北京数据优化公司
  • 贵阳网站建设三思网络长春建设网站公司哪家好
  • 学信网 的企业网站给你做认证湘阴网站建设
  • 织梦做有网站有后台 能下载备份所有代码文件么哪个网站企业邮箱最好
  • 做头像的网站空白桂林人才网
  • 如何建视频网站软文代写是什么
  • 行知智网站开发精准广告投放
  • 自己做的微课上传到哪个网站专业的临沂网站优化
  • 企业一站式网站建设做免费网站教程国vs
  • 自己做服务器的网站吗xml网站地图每天更新
  • 做网站怎么字体全部变粗了设计培训班大概多少钱
  • 网站开发如何让图片加载的更快福田做棋牌网站建设找哪家效益快
  • 织梦网站如何做伪静态wordpress增加内存
  • 杭州模板网站wordpress视频大小自由适配屏幕
  • 佛山网站建设公司排行丹东有做公司网站的吗
  • 曹县商城网站建设云主机添加网站