HashMap线程不安全体现在哪里?如果你到现在还不清楚赶紧看下去,明明白白补一补~。在Java中,HashMap是一种常用的数据结构,它以键值对的形式存储和管理数据。然而,由于HashMap在多线程环境下存在线程安全问题,因此在使用时需要格外小心。简单来说:在 hashMap1.7 中扩容的时候,因为采用的是头插法,所以会可能会有循环链表产生,导致数据有问题,在 1.8 版本已修复,改
转载
2024-03-25 19:16:26
29阅读
一、前言 日期的转换与格式化在项目中应该是比较常用的了,最近同事小刚出去面试实在是没想到被 SimpleDateFormat 给摆了一道... 面试官:项目中的日期转换怎么用的?SimpleDateFormat 用过吗?能说一下 SimpleDateFormat 线程安全问题吗,以及如何解决? 同事
原创
2021-06-05 17:35:08
784阅读
作者 |Fann_s来源 |https://juejin.im/post/5d6228046fb9a06add4e37fe引言周五去面试又被面试的一个问题问哑巴了面试官:StringB...
原创
2021-06-21 16:58:47
108阅读
引言
周五去面试又被面试的一个问题问哑巴了
面试官:StringBuilder和StringBuffer的区别在哪?我:StringBuilder不是线程安全的,StringBuffer是线程安全的面试官:那StringBuilder不安全的点在哪儿?我:。。。(哑巴了)
在这之前我只记住了StringBuilder不是线程安全的,StringBuffer是线程安全的这个结论,至于String
转载
2021-06-18 16:23:02
56阅读
面试官:StringBuilder和StringBuffer的区别在哪?
我:StringBuilder不是线程安全的,StringBuffer是线程安全的
转载
2021-07-27 15:01:25
45阅读
作者:千山 juejin.im/post/5d6228046fb9a06add4e37fe 引言 面试官:StringBuilder和StringBuffer的区别在哪? 我:StringBuilder不是线程安全的,StringBuffer是线程安全的 面试官:那StringBuilder不安全的
转载
2021-05-25 21:33:36
87阅读
周五去面试又被面试的一个问题问哑巴了面试官:StringBuilder和StringBuffer的区别在
转载
2022-03-18 15:25:51
52阅读
面试官:StringBuilder和StringBuffer的区别在哪?
我:StringBuilder不是线程安全的,StringBuffer是线程安全的
面试官:那StringBuilder不安全的点在哪儿?
我:。。。(哑巴了)
转载
2021-07-27 15:01:47
70阅读
## 为什么Java ArrayList不是线程安全
在Java中,ArrayList是一种动态数组的数据结构,它可以根据需要动态增加或减少容量。然而,ArrayList并不是线程安全的,这意味着多个线程同时访问ArrayList的操作可能导致不可预测的结果。这是因为ArrayList的内部结构并没有设计为支持并发操作,因此在多线程环境下可能会出现数据不一致的情况。
### 为什么ArrayL
原创
2024-03-31 03:12:35
255阅读
在上一篇《Java HashMap笔记之一:基本原理》中已经介绍了Java中HashMap的基本原理,包括初始大小、初始化时机、内部Entry数组大小为什么是2的幂、扩容的原因和时机等。本篇来介绍下HashMap为什么不是线程安全的。 HashMap线程不安全的根本原因-扩容 导致HashMap线程不安全的根本原因是扩容。扩容就是在put加入元素的个数超过capacity * loadFacto
转载
2023-11-21 10:32:12
65阅读
Java中的ArrayList为什么不是线程安全的
在Java中,`ArrayList` 是一个非常常用的数据结构,它可以动态地存储对象并允许快速访问。尽管如此,在多线程环境下,`ArrayList` 的使用可能会引发许多问题,尤其是数据的不一致性和潜在的并发修改异常。根据《Java Documentation》的定义,线程安全是指一个方法或类在多线程环境中能够被多个线程安全地访问而不会引发竞态
一直以来都知道HashMap是线程不安全的,但是到底为什么线程不安全,在多线程操作情况下什么时候线程不安全?让我们先来了解一下HashMap的底层存储结构,HashMap底层是一个Entry数组,一旦发生Hash冲突的的时候,HashMap采用拉链法解决碰撞冲突,Entry内部的变量:final Object key;
Object valu
转载
2023-11-25 12:17:21
37阅读
JAVA中的线程池JAVA线程池为什么要用线程池了解JAVA线程池线程池实现原理向线程池提交任务关闭线程池 JAVA线程池为什么要用线程池池化思想有很多技术都进行了应用,如线程池、数据库连接池等,池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。 在JAVA中使用线程池的好处有:(《JAVA并发编程的艺术》)降低资源消耗:通过重复利用已创建好的线程以减少创建、销毁线程所造成的消
转载
2023-12-10 09:17:10
24阅读
一、HashMap是线程不安全的 前言 只要是对于集合有一定了解的一定都知道HashMap是线程不安全的,我们应该使用ConcurrentHashMap。但是为什么HashMap是线程不安全的呢,之前面试的时候也遇到到这样的问题,但是当时只停留在***知道是***的层面上,并没有深入理解***为什么是***。于是今天重温一个HashMap线程不安全的这个问题。首先需要强调一点,HashMap的线程
转载
2023-09-22 17:08:03
87阅读
说的很清楚,SimpleDateFormat 不是线程安全的,多线程下需要为每个线程创建不同的实例。不安全的原因是因为使用了 Calend
原创
2023-02-13 10:11:28
279阅读
概述就像在介绍中说的,这一篇文章想要讨论的两个与 Redis 有关的问题就是:为什么 Redis 在最初的版本中选择单线程模型?为什么 Redis 在 4.0 之后的版本中加入了多线程的支持?这两个看起来有些矛盾的问题实际上并不冲突,我们会分别阐述对这个看起来完全相反的设计决策作出分析和解释,不过在具体分析它们的设计之前,我们先来看一下不同版本 Redis 顶层的设计: Redis 作为一个内存
转载
2024-09-23 10:48:05
45阅读
注:本系列文章中用到的jdk版本均为java8相比很多同学在刚接触Java集合的时候,线程安全的List用的一定是Vector。但是现在用到的线程安全的List一般都会用CopyOnWriteArrayList,很少有人再去用Vector了,至于为什么,文章中会具体说到。接下来,我们先来简单分析以下Vector的源码。一、Vector集合源码简析由于本文的重点不是Vector集合,因此只是简单的分
转载
2021-06-07 17:00:17
114阅读
2评论
注:本系列文章中用到的jdk版本均为java8相比很多同学在刚接触Java集合的时候,线程安全的List用的一定是Vector。但是现在用到的线程安全的List一般都会用CopyOnWriteArrayList,很少有人再去用Vector了,至于为什么,文章中会具体说到。接下来,我们先来简单分析以下Vector的源码。一、Vector集合源码简析由于本文的重点不是Vector集合,因此只是简单的分
转载
2021-04-07 10:35:07
129阅读
2评论
注:本系列文章中用到的jdk版本均为java8相比很多同学在刚接触Java集合的时候,线程安全的List用的一定是Vector。但是现在用到的线程安全的List一般都会用CopyOnWriteArrayList,很少有人再去用Vector了,至于为什么,文章中会具体说到。接下来,我们先来简单分析以下Vector的源码。一、Vector集合源码简析由于本文的重点不是Vector集合,因此只是简单的分
转载
2021-01-31 13:25:49
131阅读
2评论
注:本系列文章中用到的jdk版本均为java8 相比很多同学在刚接触Java集合的时候,线程安全的List用的一定是Vector。但是现在用到的线程安全的List一般都会用CopyOnWriteArrayList,很少有人再去用Vector了,至于为什么,文章中会具体说到。接下来,我们先来简单分析以
原创
2021-06-03 16:33:03
253阅读