masters-

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 是线程安全的

分类:

技术点:

相关文章:

  • 2021-12-10
  • 2021-10-07
  • 2021-09-05
  • 2021-10-14
  • 2021-10-25
  • 2021-08-25
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-28
  • 2022-01-23
  • 2021-12-26
  • 2021-12-17
  • 2022-12-23
相关资源
相似解决方案