并发编程
文章平均质量分 96
编程旧事
Code Daily!
展开
-
Java内存模型(JMM)
本文详细阐述了Java内存模型(JMM),其产生背景是为了解决不同操作系统内存模型的差异以及多线程环境下的并发问题。JMM定义了内存抽象,包括本地工作内存和主内存,以及8种内存操作如锁定、读取、载入等,确保线程间的数据交互。文中还介绍了并发规范,特别是happens-before原则,包括程序顺序、锁规则、volatile规则等8项原则,确保操作的内存可见性。文章还区分了JMM与JVM内存结构的不同,并强调了并发编程的三大特性:原子性、可见性和有序性。原创 2024-05-29 18:40:53 · 1009 阅读 · 0 评论 -
DelayQueue原理分析
文章深入分析了Java中的DelayQueue延迟队列的实现原理和特性。DelayQueue内部使用PriorityQueue存储和管理延时任务,并通过Delayed接口实现任务的延时比较和排序,确保延时短的任务优先执行。它通过ReentrantLock保证线程安全性,并通过Condition实现线程间的唤醒与等待。源码分析展示了核心字段如q(优先级队列)、leader(领导者线程)和available(条件变量),以及添加、删除(poll和take方法)、获取和元素数量获取等操作的详细流程。原创 2024-05-24 19:00:13 · 449 阅读 · 0 评论 -
CopyOnWriteArrayList原理分析
本文深入分析了Java中的CopyOnWriteArrayList的实现原理和使用场景。CopyOnWriteArrayList利用写时复制(Copy-On-Write, COW)技术,优化了读写操作的性能,特别适用于读多写少的场景。它通过在写操作时复制一份数组副本来避免锁的开销,从而提高了并发读的效率。但这种机制也带来了内存占用大、写操作开销大和数据一致性问题。文章还详细解析了CopyOnWriteArrayList的源码,包括类定义、初始化、add、get、remove等方法的实现细节,以及它实现的接口原创 2024-05-24 10:00:18 · 882 阅读 · 0 评论 -
ArrayBlockQueue原理分析
本文详细介绍了ArrayBlockQueue(ABQ)的原理和实现。ABQ是一种并发容器,采用生产者-消费者模型解决多线程间的数据共享问题。它基于数组实现,具有固定容量,与LinkedBlockQueue相比,ABQ是有界的。文章分析了ABQ的实现原理,包括使用ReentrantLock和Condition实现线程同步和等待唤醒机制。文章还深入探讨了ABQ的源码,包括类定义、初始化、元素添加(add、offer、put)、移除(take、poll)以及超时操作的处理。原创 2024-05-23 19:22:12 · 889 阅读 · 0 评论