首页 > 编程语言 >资深java面试题及答案整理(三)

资深java面试题及答案整理(三)

时间:2022-11-24 17:47:55浏览次数:35  
标签:面试题 Java 创建 Singleton 模式 枚举 单例 java 资深

资深java面试题及答案整理(三)

如何使用双重检查锁定在 Java 中创建线程安全的单例?
艰难的核心 Java 面试问题.这个 Java 问题也常被问: 什么是线程安全的单例,你怎么创建它。好吧,在Java 5之前的版本, 使用双重检查锁定创建单例 Singleton 时,如果多个线程试图同时创建 Singleton 实例,则可能有多个 Singleton 实例被创建。从 Java 5 开始,使用 Enum 创建线程安全的Singleton很容易。但如果面试官坚持双重检查锁定,那么你必须为他们编写代码。记得使用volatile变量。
为什么枚举单例在 Java 中更好
枚举单例是使用一个实例在 Java 中实现单例模式的新方法。虽然Java中的单例模式存在很长时间,但枚举单例是相对较新的概念,在引入Enum作为关键字和功能之后,从Java5开始在实践中。本文与之前关于 Singleton 的内容有些相关, 其中讨论了有关 Singleton 模式的面试中的常见问题, 以及 10 个 Java 枚举示例, 其中我们看到了如何通用枚举可以。这篇文章是关于为什么我们应该使用Eeame作为Java中的单例,它比传统的单例方法相比有什么好处等等。

Java 枚举和单例模式
Java 中的枚举单例模式是使用枚举在 Java 中实现单例模式。单例模式在 Java 中早有应用, 但使用枚举类型创建单例模式时间却不长. 如果感兴趣, 你可以了解下构建者设计模式和装饰器设计模式。

这是迄今为止最大的优势,如果你在Java 5之前一直在编写单例, 你知道, 即使双检查锁定, 你仍可以有多个实例。虽然这个问题通过 Java 内存模型的改进已经解决了, 从 Java 5 开始的 volatile 类型变量提供了保证, 但是对于许多初学者来说, 编写起来仍然很棘手。与同步双检查锁定相比,枚举单例实在是太简单了。

标签:面试题,Java,创建,Singleton,模式,枚举,单例,java,资深
From: https://www.cnblogs.com/biubiu111/p/16922625.html

相关文章

  • java基础——二维数组基本概念
    之前我们已经知道什么是数组(一维数组)java基础——数组,数组的存取 这里补充一点: 数组本身是引用数据类型,数组的元素 可以是  基本数据类型 跟 引用数据类型 ......
  • Java实现环形队列
    这里我定义的环形队列为:列表中最后一个元素是指向列表中的第一个元素,而且里面提供一个next方法,可以不断获取下一个元素,在环形队列中也就是不断的转圈,实现方式如下:队列中提供......
  • Java常用数据结构
    1、数组数组(Array) 是一种很常见的数据结构。它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储。我们直接可以利用元素的索引(index)可以计算出该元......
  • java 数据类型
    java属于强类型语言,要求变量必须符合规定,变量必须先定义在使用。java数据类型分为两大类:基本数据类型和引用数据类型。整数拓展:二进制0b八进制0十六进制0x浮点数拓......
  • 【JAVA笔记】JAVA常用的字符串操作03
    一、Java中常用的字符串操作publicclassCommon_String_Operations{publicstaticvoidmain(String[]args){booleanp1=isEmpty("aa");S......
  • JavaScript的this指向
    1、结论:js中的this是当前方法所属的对象 'usestrict'letobj={name:'taotao',myName(){returnthis}}console.log(obj.myName())//{nam......
  • Java中File类mkdir和mkdirs的区别
    在API中,mkdir()的定义如下:创建此抽象路径名指定的目录。mkdirs()的定义如下:创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。注意,此操作失败时也可能已经成功地创......
  • [Android]java.io.FileNotFoundException: open failed: EACCES (Permission denied)
    如下错误:有很大部分原因都是忘记加权限了,我出现这个错误的原因是我往外部存储写文件,但是没有加上外部存储的权限,所以加入如下代码即可:<uses-permissionandroid:name="andro......
  • java.io.FileNotFoundException:open failed: EACCES (Permission denied)
    在android中创建一个FileOutputStream的时候,报错<spanstyle="font-size:18px;">java.io.FileNotFoundException:/storage/emulated/0/a.jpg:openfailed:EACCES(Permis......
  • java常用类中Calendar【日历】
    Calendar类Calendar:它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方......