加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Java面试过程中10个最难回答的面试题(附答案)

发布时间:2019-08-05 13:40:41 所属栏目:建站 来源:IT技术分享
导读:这是我收集的10个最棘手的Java面试问题列表。这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题。你可能知道这些棘手的 Java 问题的答案,或者觉得这些不足以挑战你的 Java 知识,但这些问题都是容易在各种 Java 面试中被问到的,而且包括我的朋友

下面的代码是单例模式中双重检查锁定的示例,此处的 getInstance() 方法检查两次,以查看 INSTANCE 是否为空,这就是为什么它被称为双检查锁定模式,请记住,双检查锁定是代理之前Java 5,但Java5内存模型中易失变量的干扰,它应该工作完美。

  1. /** 
  2. * 单例模式示例,双重锁定检查 
  3. */ 
  4. public class DoubleCheckedLockingSingleton{ 
  5.  private volatile DoubleCheckedLockingSingleton INSTANCE; 
  6.  private DoubleCheckedLockingSingleton(){} 
  7.  public DoubleCheckedLockingSingleton getInstance(){ 
  8.  if(INSTANCE == null){ 
  9.  synchronized(DoubleCheckedLockingSingleton.class){ 
  10.  //double checking Singleton instance 
  11.  if(INSTANCE == null){ 
  12.  INSTANCE = new DoubleCheckedLockingSingleton(); 
  13.  } 
  14.  } 
  15.  } 
  16.  return INSTANCE; 
  17.  } 

你可以调用 DoubleCheckedLockingSingleton.getInstance() 来获取此单例类的访问权限。

现在,只需查看创建延迟加载的线程安全的 Singleton 所需的代码量。使用枚举单例模式, 你可以在一行中具有该模式, 因为创建枚举实例是线程安全的, 并且由 JVM 进行。

人们可能会争辩说,有更好的方法来编写 Singleton 而不是双检查锁定方法, 但每种方法都有自己的优点和缺点, 就像我最喜欢在类加载时创建的静态字段 Singleton, 如下面所示, 但请记住, 这不是一个延迟加载单例:

单例模式用静态工厂方法

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读