ConcurrentHashMap執行緒安全嗎?

  • 2020 年 12 月 27 日
  • 筆記

前言 没啥深入实践的理论系同学,在使用并发工具时,总是认为把 HashMap 改为 ConcurrentHashMap ,就完美解决并发了呀。或者使用写时复制的 CopyOnWriteArrayList ,性能更佳呀!技术言论虽然自由,但面对魔鬼面试官时,我们更在乎的是这些真的正确吗? 整理了100 …

Continue Reading

為什麼 ConcurrentHashMap 的讀操作不需要加鎖?

  • 2020 年 12 月 21 日
  • 筆記

前言 我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢? 为什么 ConcurrentHashMap 的读操作不需要加锁? ConcurrentHas …

Continue Reading

深入解析ConcurrentHashMap:感受並發編程智慧

  • 2020 年 12 月 9 日
  • 筆記

如果有一个整型变量count,多个线程并发让count自增1,你会怎么设计? 你知道如何让多个线程协作完成一件事件吗? 前言 很高兴遇见你~ ConcurrentHashMap是个老生常谈的集合类了,我们都知道多线程环境下不能直接使用HashMap,而需要使用ConcurrentHashMap,但有 …

Continue Reading

2w+長文帶你剖析ConcurrentHashMap~!

  • 2020 年 11 月 19 日
  • 筆記

并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩ …

Continue Reading

Java並發隊列與容器

  • 2020 年 11 月 5 日
  • 筆記

【前言:无论是大数据从业人员还是Java从业人员,掌握Java高并发和多线程是必备技能之一。本文主要阐述Java并发包下的阻塞队列和并发容器,其实研读过大数据相关技术如Spark、Storm等源码的,会发现它们底层大多用到了 Java并发队列、同步类容器 、ReentrantLock等。建议大家结合 …

Continue Reading

Java並發容器

  • 2020 年 7 月 22 日
  • 筆記

HashMap、ConcurrentHashMap HashMap常见的不安全问题及原因 非原子操作 ++ modCount 等非原子操作存在且没有任何加锁机制会导致线程不安全问题; 扩容取值 扩容期间会创建新的table在数据转储期间,可能会有取到null的可能; 碰撞丢失 多线程情况下,若同时对 …

Continue Reading

深入了解ConcurrentHashMap

在上一篇文章 【简单了解系列】从基础的使用来深挖HashMap 里,我从最基础的使用中介绍了HashMap,大致是JDK1.7和1.8中底层实现的变化,和介绍了为什么在多线程下可能会造成死循环,扩容机制是什么样的。感兴趣的可以先看看。 我们知道,HashMap是非线程安全的容器,那么为什么Concu …

Continue Reading

Tomcat session的實現:執行緒安全與管理

  • 2020 年 5 月 16 日
  • 筆記

本文所说的session是单机版本的session, 事实上在当前的互联网实践中已经不太存在这种定义了。我们主要讨论的是其安全共享的实现,只从理论上来讨论,不必太过在意实用性问题。 1. session 的意义简说 大概就是一个会话的的定义,客户端有cookie记录,服务端session定义。用于确 …

Continue Reading

淺析Java7中的ConcurrentHashMap

  • 2020 年 4 月 24 日
  • 筆記

引入ConcurrentHashMap 模拟使用hashmap在多线程场景下发生线程不安全现象 import java.util.HashMap; import java.util.Map; import java.util.UUID; /** * 模拟hashmap在多线程场景下的出现的不安全现象 …

Continue Reading