zoukankan      html  css  js  c++  java
  • Java 集合类高阶面试题

    1. Java 集合的快速失败(fail-fast)和安全失败(fail-safe)的差别是什么?

    ​ 快速失败和安全失败都是 java 集合(Collection)的一种错误机制。单线程情况下,遍历集合时去执行增删等改变集合结构的操作;或者多线程情况下,一个线程遍历集合,另一个线程执行增删等改变集合结构的操作。

    • 快速失败,是指失败 / 异常时立即报错,通常会抛出 ConcurrentModificationException 异常,像 java.util 包下面的集合类就是使用这种机制;

    • 安全失败,是指失败 / 异常时直接忽略,java.util.concurrent 包下面的集合类都是使用这种机制。

    2. HashMap 和 ConcurrentHashMap 的区别?

    基础特性不同

    HashMap 的 key 和 value 可以为 null,ConcurrentHashMap 的 key 和 value 不能为 null。

    内部数据结构不同

    HashMap 在 JDK1.7 中采用的数据结构是数组 + 链表,在 JDK1.8 中采用的数据结构是数组 + 链表 / 红黑二叉树;

    ConcurrentHashMap 在 JDK1.7 中采用的数据结构是分段的数组 + 链表,JDK1.8 的内部数据结构采用的数据结构是数组 + 链表 / 红黑二叉树(同 HashMap 一致)。

    线程安全不同

    HashMap 是非线程安全的

    ConcurrentHashMap 是线程安全的

  • 相关阅读:
    JS 百度地图路书---动态路线
    jQuery---创建和添加节点
    CSS基础
    第一篇:前端知识之HTML内容
    JS高级---为内置对象添加原型方法
    JS DOM属性+JS事件
    Vue-router
    vue使用kkfileview文件预览功能
    JS高级---案例:验证密码的强度
    promise是怎么来的?
  • 原文地址:https://www.cnblogs.com/masters-/p/12906871.html
Copyright © 2011-2022 走看看