![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java数据结构
文章平均质量分 92
skier~
Java 偏执狂
展开
-
ConcurrentHashMap源码分析
一、为什么要使用 ConcurrentHashMap在并发编程中使用 HashMap 可能会导致程序死循环,而是用线程安全的 HashTable 效率又非常低下,为了解决这个问题,ConcurrentHashMap 问世了。1)线程不安全的 HashMap,在多线程环境下,使用 HashMap 进行 put 操作会引起死循环(JDK1.7),在 JDK1.8 中会导致数据被覆盖的问题。2)效率低下的 HashTable,HashTable 使用 synchronized 来保证线程安全,在线程竞争激烈原创 2021-11-30 07:31:07 · 412 阅读 · 0 评论 -
ThreadLocal详解
ThreadLocal 的基本原理我们先看一下 ThreadLocal 的简单使用:ThreadLocal<String> localName = new ThreadLocal();localName.set("帅枫");String name = localName.get(); // name = 帅枫localName.remove();从代码上看它的使用很简单,它可以实现线程间的数据隔离,一个线程使用 get()方法是不能拿到其他线程的值的。我们可以看一下 set()方原创 2021-11-30 07:30:21 · 297 阅读 · 0 评论 -
Hashtable详解
如何保证 HashMap 线程安全我们知道 HashMap 是线程不安全的,我们一般使用这三种方式来代替原生的线程不安全的 HashMap:1)使用 java.util.Collections 类的 synchronizedMap 方法包装一下 HashMap,得到线程安全的 HashMap,其原理就是对所有的修改操作都加上 synchronized。方法如下:public static <K,V> Map<K,V> synchronizedMap(Map<K,V>原创 2021-11-30 07:29:23 · 716 阅读 · 0 评论 -
HashMap
1、前置知识HashMap 是我们常用的一个数据结构,它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却不是确定的。HashMap 最多只允许一条记录的键为null,允许多条记录的值为null。HashMap 非线程安全,即任一时间可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要满足线程安全要求,可以使用Collections 的synchronizedMap 方法使HashMap具有线程安全的能力,或者使用 Concurren原创 2021-11-29 12:49:22 · 208 阅读 · 0 评论 -
ArrayList
ArrayList 概述ArrayList 实现了 List 接口,其实就是一个数组列表,不过作为 Java 的集合框架,它只能存储对象引用类型,也就是说当我们需要装载的数据是诸如 int、float 等基本数据类型的时候,必须把它们转换成对应的包装类。ArrayList 的底层实现是一个 Object 数组:transient Object[] elementData;既然它是基于数组实现的,数组在内存空间中是连续分配的,那必然查询速率非常快,不过当然也肯定逃不过增删效率低的缺陷。另外,和 A原创 2021-11-29 12:48:44 · 184 阅读 · 0 评论