
JUC
文章平均质量分 95
Java并发编程笔记
gadiaola
末9软件研究生,6年拜仁球迷,德拜双料,梦想成为鹅孝子。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【JUC】并发编程重点知识——ThreadLocal
本文详细剖析了ThreadLocal的实现原理和内存管理机制。ThreadLocal通过为每个线程维护独立的ThreadLocalMap实现线程隔离。当发生哈希冲突时使用线性探测法处理,并采用弱引用机制防止内存泄漏。文章深入解析了set/get方法的实现逻辑,包括探测式清理(expungeStaleEntry)和启发式清理(cleanSomeSlots)两种过期数据清理策略,以及扩容机制。原创 2025-06-18 10:51:01 · 1287 阅读 · 0 评论 -
【JUC】并发编程重点知识——常见并发容器总结
Java并发容器提供了高效的线程安全解决方案,包括ConcurrentHashMap(分段锁/Node+CAS)、CopyOnWriteArrayList(读多写少场景)、ConcurrentLinkedQueue(非阻塞队列)和BlockingQueue(阻塞队列)。ConcurrentSkipListMap利用跳表实现快速查找和有序遍历。这些容器通过细粒度锁、写时复制、CAS等机制优化并发性能,适用于不同场景,如高并发读写、数据共享通道和有序访问需求。原创 2025-06-17 12:15:01 · 932 阅读 · 0 评论 -
【JUC】并发编程重点知识——AQS与常见同步工具类
摘要: AQS(AbstractQueuedSynchronizer)是Java并发包的核心框架,用于构建锁和同步器。它通过state变量表示资源状态,使用CLH队列管理等待线程,支持独占和共享两种模式。AQS提供模板方法模式,子类只需实现tryAcquire等钩子方法即可自定义同步器。基于AQS实现的常见同步工具包括: Semaphore - 控制并发线程数量 CountDownLatch - 多线程协作计数器 CyclicBarrier - 可循环使用的线程屏障原创 2025-06-16 10:50:52 · 805 阅读 · 0 评论 -
【JUC】并发编程重点知识——线程池
Java线程池详解,包括线程池简介、Executors、ThreadPoolExecutor、线程池工作原理和常见的线程池等等。原创 2025-06-15 15:13:23 · 720 阅读 · 0 评论 -
【JUC】并发编程重点知识——JMM(Java 内存模型)
Java内存模型(JMM)规范详解摘要:JMM是Java程序的抽象内存规范,定义了主内存和工作内存的交互机制,确保多线程环境下内存访问的一致性。主内存存储共享变量,工作内存保存线程私有副本,线程间通信必须通过主内存完成。JMM规定了8种原子操作实现内存交互,并强调三大特性:可见性(volatile解决缓存一致性问题)、原子性(指令不可分割)、有序性(防止指令重排序)。同时分析了CPU流水线技术和指令重排原理,解释了这些特性在多线程环境中的重要性。JMM通过这套规范保证了Java程序在不同平台下的内存访问一致原创 2025-06-14 14:42:18 · 839 阅读 · 0 评论 -
【JUC】并发编程重点知识——乐观锁与悲观锁
悲观锁与乐观锁是两种并发控制方法。悲观锁假设冲突必然发生,操作前加锁独占资源(如synchronized、ReentrantLock),适合写多读少、长事务场景。乐观锁假设冲突较少,通过CAS或版本号在提交时检测冲突(如Atomic类),适合读多写少、短操作场景。两者在加锁时机、线程状态、性能开销上存在差异:悲观锁强一致但阻塞,乐观锁非阻塞需自旋。选择依据主要取决于读写比例、冲突概率和性能需求。原创 2025-06-14 10:46:30 · 882 阅读 · 0 评论 -
【JUC】并发编程重点知识——CAS与Atomic原子类总结
CAS(Compare-And-Swap)是一种无锁编程的CPU原子指令,通过比较内存值与预期值实现线程安全操作。其底层采用lock cmpxchg指令保证原子性,具有无阻塞、高性能特点,但存在ABA问题和循环开销问题。Java中通过Atomic系列类(如AtomicInteger)实现CAS操作,包含原子引用、数组、更新器等扩展功能。相比synchronized悲观锁,CAS基于乐观锁思想,但需配合volatile保证可见性。为解决ABA问题,可使用AtomicStampedReference版本号机制。原创 2025-06-14 10:36:46 · 926 阅读 · 0 评论 -
【JUC】并发编程重点知识——Volatile
本文探讨了Java中volatile关键字的同步机制及其实现原理。volatile通过三大特性(可见性、有序性、非原子性)实现轻量级同步,相比synchronized性能更高但写操作较慢。其底层通过lock前缀指令和内存屏障保证缓存一致性,防止指令重排。文章详细分析了指令重排的限制条件和典型示例,阐释了双端检锁机制(DCL)的线程安全问题及volatile的解决方案。内存屏障(写屏障、读屏障)的作用被重点说明,包括确保原子性、阻止重排序和强制数据刷新。原创 2025-06-13 15:50:53 · 981 阅读 · 0 评论 -
【JUC】并发编程重点知识——ReentrantLock
ReentrantLock与synchronized对比分析:1)实现层面:前者为JDK实现,后者为JVM实现;2)特性对比:ReentrantLock支持可中断、公平锁、超时机制和多条件变量,而synchronized自动解锁但不支持上述特性。核心原理:通过AQS实现锁机制,非公平锁采用直接CAS竞争,公平锁先检查队列;条件变量通过ConditionObject管理等待队列。使用要点:必须配对解锁,可重入机制通过state计数实现,提供lockInterruptibly()实现可打断获取锁。原创 2025-06-13 10:29:11 · 1139 阅读 · 0 评论 -
【JUC】并发编程重点知识——Synchronized及其优化原理
摘要:本文深入解析Java中synchronized的实现原理与优化策略。首先介绍synchronized的基本使用,包括同步代码块和同步方法两种形式,以及对应的锁对象选择。其次详细阐述Monitor监视器机制,说明重量级锁的工作流程。重点分析了锁升级过程,包括偏向锁、轻量级锁和重量级锁的转换条件及实现原理。最后探讨了自旋锁、锁消除和锁粗化三种优化技术,以提高并发性能。全文系统地呈现了synchronized从使用到底层实现的完整知识体系,为深入理解Java同步机制提供了重要参考。原创 2025-06-12 10:50:12 · 834 阅读 · 0 评论