广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >【字节面试】Fail-fast知识点相关知识点
  • 238
分享到

【字节面试】Fail-fast知识点相关知识点

面试java字节fail-fastEnumeration 2023-08-31 06:08:21 238人浏览 泡泡鱼
摘要

字节面试,问到的一个小知识点,这里做一下总结,其实小编之前有一篇文章,已经对此有过涉及,不过这里知识专项针对于问题,把这个知识点拎出来说一下。 1.问题 什么是Fail-fast机制? Hash

字节面试,问到的一个小知识点,这里做一下总结,其实小编之前有一篇文章,已经对此有过涉及,不过这里知识专项针对于问题,把这个知识点拎出来说一下。

1.问题

什么是Fail-fast机制?
HashMap是否拥有Fail-fast机制?
ConcurrentModificationException异常原因和解决方法是什么?
哪些你常用的数据结构是Fail-fast的,哪些不是?举例说明一下
Enumeration与Iterator的异同?

在这里插入图片描述

2.探索、解答

2.1 Fail-fast机制

从字面意思,很好理解,就是快速失败机制。映射到java设计中,fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast事件。

2.2 ConcurrentModificationException

List在for、while正常遍历过程中,如果remove元素,容易出现ConcurrentModificationException 异常,根本原因的话,之前ArrayList源码分析文章已经讲过,各位有兴趣可以移步阅读。

ConcurrentModificationException发生是因为我们在使用迭代器遍历List的同时,还使用了List相应的remove、add进行元素增加或删除,导致不一。

2.3 Enumeration与Iterator的异同

2.3.1 Iterator

java中迭代器接口的源码很简单,我们看下面

package java.util;import java.util.function.Consumer;public interface Iterator<E> {    boolean hasNext();    E next();    default void remove() {        throw new UnsupportedOperationException("remove");    }    default void forEachRemaining(Consumer<? super E> action) {        Objects.requireNonNull(action);        while (hasNext())            action.accept(next());    }}

就是遍历、移除的接口定义,这块知识我们在Android源码设计模式探索与实战【迭代器模式】一文中,对于迭代器设计模式,做过深入剖析,迭代器模式重在容器类集合提供顺序遍历的方式,其实从上面Demo、实践案例、源码中,大家都可以看到,迭代器模式,实际上就是把不同类型的集合的遍历进行了封装, 这样针对于客户端来说,只需关注迭代器接口,不再需要关心内部使用了什么类型的集合。

2.3.2 Enumeration

我们看一下这个接口的源码

package java.util;public interface Enumeration<E> {    boolean hasMoreElements();    E nextElement();}

只有是否还有元素的判断接口、遍历下一个元素的两个方法定义,并没有移除方法,所以这个玩意,自然而然就不存在Fail-fast和ConcurrentModificationException了。

2.3.3 Enumeration与Iterator异同总结

其实一看源码,相信大家就立马明白了,Enumeration与Iterator都是java定义的集合遍历接口,不同的是Iterator提供了移除接口。
有了移除操作,自然而然就是涉及到多线程安全性,那么就引入了可能存在的ConcurrentModificationException。

2.4 Fail-fast举例

哪些你常用的数据结构是Fail-fast的,哪些不是?上面源码的时候,其实大家已经看到了答案。
Arraylist、HashMap(LinkedHashmap、HashSet本身就是继承与Hashmap的)是有Fail-fast机制的,因为他们都有迭代器Iterator。而HashTable、Vector的某些遍历方式是没有的,因为它实现与Enumeration。

 * @see     java.util.Iterator * @see     java.io.SequenceInputStream * @see     java.util.Enumeration#nextElement() * @see     java.util.Hashtable * @see     java.util.Hashtable#elements() * @see     java.util.Hashtable#keys() * @see     java.util.Vector * @see     java.util.Vector#elements()public class Itbird{public static void main(String[] args){        Vector v = new Vector();        v.addElement("my");        v.addElement("you");        Enumeration e = v.elements();//返回Enumeration对象        while(e.hasMoreElements()){            String value = (String)e.nextElement();//调用nextElement方法获得元素            System.out.print(value);        }    }}

来源地址:https://blog.csdn.net/baobei0921/article/details/129145897

--结束END--

本文标题: 【字节面试】Fail-fast知识点相关知识点

本文链接: https://www.lsjlt.com/news/384337.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【字节面试】Fail-fast知识点相关知识点
    字节面试,问到的一个小知识点,这里做一下总结,其实小编之前有一篇文章,已经对此有过涉及,不过这里知识专项针对于问题,把这个知识点拎出来说一下。 1.问题 什么是Fail-fast机制? Hash...
    99+
    2023-08-31
    面试 java 字节 fail-fast Enumeration
  • HTML5相关知识点
    这篇文章主要介绍了HTML5相关知识点,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。SGML(标准通用标记语言)和HTML(超文本标记语言)...
    99+
    2022-10-19
  • Laravel面试题的相关知识点分析
    小编给大家分享一下Laravel面试题的相关知识点分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!23 个你应该知道的 Laravel 面试问题探索下一次技术面...
    99+
    2023-06-14
  • java面试知识点
    Java文件经过JVM编译成字节码文件,即.class文件,将字节码文件在不同的操作系统中运行时,操作系统再将字节码文件编译成机器码文件。这就是Java跨平台首先明确一点,java 的 GC 回收是完全自动的,没有提供相关 api 手动回收...
    99+
    2020-03-24
    java教程 java 面试
  • jdk 8 hashMap相关知识点
    1. compute、 computeIfAbsent、computeIfPresent 这三个是 Java Map 接口中的三个方法,用于对 Map 中的键值对进行操作。它们的区别在于执行的时机和操作的方式: compute(K key,...
    99+
    2023-10-12
    java 开发语言 hashMap
  • HTML相关知识点总结
    目录简介HTML文档和网页的关系呢?HTML的标签样子?HTML基本概念标签元素属性注释编码规则HTML常用元素标题段落链接跳转页面:跳转锚点图片列表有序列表无序列表定义列表表格块表...
    99+
    2022-11-12
  • android-7 面试知识点
    1、说说Glide中的with方法2、什么是线程安全?保障线程安全有哪些手段?3、说说TCP的三次挥手、四次挥手4、谈谈垃圾回收机制?5、手写...
    99+
    2022-06-06
    面试 Android
  • android-6-面试知识点
    1. 增删改查的Sql语句 建表:create table user(id Integer(11) primary key auto_incre...
    99+
    2022-06-06
    面试 Android
  • 关于python列表相关知识点
    目录python列表1.列表的创建与删除列表的特点1.列表元素按顺序有序排序2.索引映射唯一数据3.列表可以存储重复数据4.任意数据类型混存5.根据需要动态分配和回收内存2.列表的查...
    99+
    2023-05-16
    python python列表
  • HashMap相关知识点有哪些
    本篇内容介绍了“HashMap相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!HashMap 和 HashSet 是 Java...
    99+
    2023-06-17
  • YARN相关知识点有哪些
    本篇内容介绍了“YARN相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!YARN产生背景为什么会产生YRAN?这个与MapRe...
    99+
    2023-06-19
  • Baseline相关知识点有哪些
    本篇内容主要讲解“Baseline相关知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Baseline相关知识点有哪些”吧! 在 Oracle Da...
    99+
    2022-10-19
  • CSS相关知识点有哪些
    本篇内容介绍了“CSS相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1、CSS选择器 ...
    99+
    2022-10-19
  • Git相关知识点有哪些
    这篇文章主要讲解了“Git相关知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Git相关知识点有哪些”吧!一、Git工作流程以上包括一些简单而常用...
    99+
    2022-10-19
  • MySQL相关知识点有哪些
    这篇文章主要介绍了MySQL相关知识点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 1、数据库架构1.1...
    99+
    2022-10-19
  • HTML5拖拽的相关知识点
    本篇内容主要讲解“HTML5拖拽的相关知识点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5拖拽的相关知识点”吧!拖拽相关属性draggable属性是h...
    99+
    2022-10-19
  • 云服务器相关知识点
    云服务器是一种虚拟的数据中心基础设施,它允许用户将数据存储在云中,并使用公有云提供商的资源进行处理。以下是一些有关云服务器的相关知识点: 云服务器的类型:包括公有云、私有云和混合云。公有云通常由第三方提供商提供,而私有云通常由企业自行管...
    99+
    2023-10-26
    知识点 服务器
  • python装饰器相关知识点
    小编给大家分享一下python装饰器相关知识点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、装饰器1.相关知识点*args:负责将多余的位置实参汇总,赋值给a...
    99+
    2023-06-29
  • mysql知识点+面试总结
    目录 1 mysql介绍 2 数据库常见语法 3 数据库表的常见语法 4 其他常见语法(日期,查询表字段) 5 JDBC开发步骤 6 索引 6.1 索引常见语法 7 常见面试总结 8 java集成数据库监控页面 1 mysql介绍 ...
    99+
    2023-09-04
    mysql 面试 数据库
  • KeyDB的相关知识点有哪些
    今天小编给大家分享一下KeyDB的相关知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。线程模型KeyDB将redi...
    99+
    2023-06-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作