`
ysa198584
  • 浏览: 37083 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java hashmap多线程put被hang 的解决

    博客分类:
  • java
阅读更多
初始化几十万数据库来的时候,我们一般用多线程访问数据库,多线程初始化。
比如map对类似手机归属地的缓存映射,一开始就是用的hashMAP,发现在初始30万的数据一直停在那里过了半小时还没完,最先以为是查询库的问题,毕竟量多,后来把map的put操作去掉后,居然只用了20秒(机器差),后来发现就是hashmap导至死循环。具体原因,百度查。
但是可以用ConcurrentHashMap解决问题。hashtable会锁住整个map结构,性能稍微差。所以没采用。还有如果知道MAP的长度的情况下,最好将其他初始化一个长度,因load系数与map长度的一个关系值(默认是0.75),初始100,那它可以装载的元素个数最多75个。
分享到:
评论

相关推荐

    关于如何解决HashMap线程安全问题的介绍

    4. 避免在多线程环境中直接使用HashMap:如果你确定不需要在多线程环境下共享HashMap,那么可以考虑局部变量的方式,只在单个线程中使用HashMap,这样就无需担心线程安全问题。 总结起来,理解HashMap的线程不安全...

    java的hashMap多线程并发情况下扩容产生的死锁问题解决.docx

    在Java的HashMap中,多线程并发环境下的扩容操作可能会引发死锁问题。这主要发生在JDK 1.7版本,因为其扩容机制采用了头插法。以下详细解释这个问题及其解决方案。 首先,HashMap的扩容机制是在容量达到阈值时触发...

    Java HashMap类详解

    Java HashMap 类详解 本资源详细介绍了 Java 中的 HashMap 类,包括其实现机制、Hash 存储机制、集合存储机制等方面的知识点。 1. HashMap 和 HashSet 的关系 HashMap 和 HashSet 是 Java Collection Framework ...

    HashMap源码分析系列-第四弹:HashMap多线程解决方案.docx

    ### HashMap多线程解决方案 #### 一、引言 在多线程环境下,Java的`HashMap`类在处理并发操作时容易出现线程安全问题。本文档深入探讨了`HashMap`在多线程环境中可能遇到的安全问题,并提出了一系列可行的解决方案...

    js 版 java hashmap

    9. **并发安全**:如果在多线程环境下使用,还需要考虑线程安全问题。Java的HashMap不是线程安全的,但JavaScript环境通常是单线程的,所以这个问题在JavaScript中可能不那么突出。 综上所述,"js版java HashMap"的...

    高级程序员必会的HashMap的线程安全问题,适用于0~2年的.7z

    然而,对于多线程环境,HashMap并不是线程安全的,这在并发编程中可能会引发一系列问题。本篇将深入探讨HashMap的线程安全问题,并提供相关的解决方案。 首先,我们需要了解HashMap在多线程环境下可能出现的问题: ...

    java HashMap原理分析

    Java HashMap原理分析 Java HashMap是一种基于哈希表的数据结构,它的存储原理是通过将Key-Value对存储在一个数组中,每个数组元素是一个链表,链表中的每个元素是一个Entry对象,Entry对象包含了Key、Value和指向...

    通过代码证明HashMap是线程不安全的(只用了一个Java文件)

    这个主题通常涉及到多线程编程和Java集合框架的基础知识。本篇文章将通过分析`HashMap`的源码以及编写一个简单的测试程序来证明这一点。 首先,我们要理解什么是线程安全。线程安全是指在多线程环境中,一个类或...

    hashmap-thread-test:测试 Java HashMap 是否是线程安全的

    然而,`HashMap`并非线程安全,这意味着在多线程环境中直接使用`HashMap`可能会导致数据不一致、并发问题,甚至程序崩溃。本项目“hashmap-thread-test”显然是为了测试和展示这一特性。 ### Java HashMap 的特性 ...

    Java中HashMap的工作机制

    在Java中,HashMap是一种广泛使用的数据结构,它基于哈希表的Map接口实现。哈希表是一种通过哈希过程将键映射到特定位置的数据结构,该位置存储了键对应的值。在详细探讨Java中HashMap的工作机制之前,首先需要理解...

    Java多线程程序案例

    根据给定文件的信息,我们可以提炼出以下关于Java多线程程序设计的知识点: ### Java多线程基础 在Java中,多线程是通过`Thread`类或实现`Runnable`接口来实现的。多线程可以提高程序的执行效率,尤其是在处理CPU...

    JAVA hashmap 负载因子为什么是0.75,官方解释

    java hashmap 扩容因子为什么是0.75,官方给出的解释

    Java-HashMap.rar_hashmap_java hashmap

    1. **非同步**:`HashMap`不是线程安全的,因此在多线程环境下不建议直接使用,可以考虑使用`Collections.synchronizedMap()`方法将其包装为同步的,或者使用`ConcurrentHashMap`。 2. **无序性**:`HashMap`中的...

    Java HashMap高难度面试题集锦解析Java HashMap面试题及答案解析-高难度

    HashMap不是线程安全的,多线程环境下使用需通过同步机制,如使用ConcurrentHashMap或手动加锁。 10. **遍历HashMap**: 可以通过调用entrySet()获取键值对集合,然后使用迭代器遍历并访问每个键值对。 11. **...

    Java多线程矩阵相乘的代码

    在Java编程语言中,多线程是实现并发执行任务的关键技术。这个压缩包中的内容,"Java多线程矩阵...通过对代码的阅读和分析,我们可以深入理解Java多线程在解决实际问题中的应用,同时也能掌握矩阵运算的并行化策略。

    Java SE程序 HashMap类

    Java SE程序 HashMap类Java SE程序 HashMap类Java SE程序 HashMap类Java SE程序 HashMap类Java SE程序 HashMap类Java SE程序 HashMap类Java SE程序 HashMap类Java SE程序 HashMap类Java SE程序 HashMap类Java SE程序...

    疫苗:Java HashMap的死循环

    在多线程环境中,HashMap的put操作可能会导致死循环的问题。这是因为HashMap的resize操作可能会导致所有线程挂起,从而引发死循环。下面我们来分析resize操作的源代码: void resize(int newCapacity) { Entry[] ...

    自定义map实现java的hashmap

    - 线程安全:Java中的HashMap不是线程安全的,如果在多线程环境下使用,需要考虑同步机制,如使用`Collections.synchronizedMap()`或者使用`ConcurrentHashMap`。 - 空值处理:键或值为null的情况需要特殊处理,...

    java断点续传,刚刚整理出来多线程处理

    然而,实现多线程断点续传需要解决几个问题: 1. **同步管理**:多个线程可能会同时访问同一个文件的部分,因此需要使用`synchronized`关键字或`Lock`对象来确保并发安全。 2. **断点信息共享**:每个线程需要知道...

    Java多线程并发访问解决方案

    本文将深入探讨Java中的多线程并发访问解决方案,主要围绕以下几个核心知识点进行阐述: 1. **线程同步机制**: - **synchronized关键字**:Java中的synchronized提供了一种内置锁机制,它可以保证同一时间只有一...

Global site tag (gtag.js) - Google Analytics