java并发编程
文章平均质量分 84
java并发编程相关
菜鸟猫喵喵
自己给自己点赞的屑
展开
-
一个生产者-消费者模式实现方式
wait-notify模式的典型应用它可以实现生产者-消费者模式wait-notify模式的经典写法生产者和消费者的逻辑都可以统一抽象成以下几个步骤:step1:获得对象的锁;step2:循环判断是否需要进行生产活动,如果不需要进行生产就调用wait方法,暂停当前线程;如果需要进行生产活动,进行对应的生产活动;step3:通知等待线程...原创 2022-06-04 15:51:31 · 102 阅读 · 0 评论 -
谈谈JUC之CopyOnWriteArrayList
本篇博客介绍CopyOnWriteArrayList类,读完本博客你将会了解:CopyOnWriteArrayList的实现原理(写时复制);CopyOnWriteArrayList的使用场景;我们知道ArrayList是线程不安全的。JDK1.5之前,要实现线程安全的List,我们可以使用Vector类使用Collections.synchronizedList返回一个同步代理类;自己实现ArrayList的子类,并进行同步/加锁。前两种的方式都相当与加了一把‘全局锁’,所得粒度过大原创 2022-02-15 23:26:30 · 342 阅读 · 0 评论 -
【神奇的传送门】java并发编程系列目录
我们要持续学习ing学习过程中写了很多篇笔记,特用本文记录一下,方便查阅。java并发编程基础篇【java多线程基础篇】● 学习总结java并发编程进阶篇真正掌握Java多线程,必须要弄懂J.U.Cjuc-atomic 原子类框架juc并发集合框架刨析JDK1.8的ConcurrentHashMap并发编程的基石系列【并发编程的基石】CAS机制 (compareAndSwap)Java并发之AQS详解1.0Java并发之AQS详解的补充...原创 2022-02-12 16:07:43 · 227 阅读 · 0 评论 -
juc-collections 集合框架
juc-collections 集合框架概览:这里的juc-collections集合框架,是指java.util.concurrent包下的一些同步集合类,按类型划分可以分为:Set、List、Map、Queue四大类,每个类都有自己适合的使用场景,整个juc-collections集合框架的结构如下图:在简单的了解JUC包中集合类的框架之后,后面的章节再逐步对各个类进行介绍。1. List和SetJUC集合包中的List和Set实现类包括: CopyOnWriteArrayList, Cop原创 2022-02-12 16:04:34 · 218 阅读 · 0 评论 -
刨析JDK1.8的ConcurrentHashMap
本篇文章将从concurrentHashMap的源码出发,带大家一点点了解它的实现原理。文章结构部分关键参数构造方法putget总结首先简单说说他的特性。concurrentHashMap跟Hashtable具有相同的功能方法。可以看作是Hashtable的升级版,HashMap的线程安全版。跟Hashtable相同,它的键或值不允许是null。ConcurrentHashMap和HashMap一样都是采用拉链法处理哈希冲突,且都为了防止单链表过长影响查询效率,所以当链表原创 2022-02-11 23:50:02 · 1152 阅读 · 1 评论 -
juc-atomic 原子类框架
早期的JDK版本中,如果要并发的对Integer、Long、Double之类的Java原始类型或引用类型进行操作,一般都需要通过锁来控制并发,以防数据不一致。从JDK1.5开始,引入了java.util.concurrent.atomic工具包,该包提供了许多Java原始/引用类型的映射类,如AtomicInteger、AtomicLong、AtomicBoolean,这些类可以通过一种“无锁算法”,线程安全的操作Integer、Long、Boolean等原始类型。所谓“无锁算法”,我们在讲juc-l原创 2022-02-03 23:55:23 · 535 阅读 · 0 评论 -
Unsafe类看着一篇就够了
文章目录Unsafe类Unsafe简介Unsafe对象的创建一、内存操作(包括分配内存、释放内存等)二、操纵对象属性三、操纵数组元素1. unsafe操作数组相关方法介绍四、线程挂起与恢复五、CAS1.什么是CAS?2.典型应用六、内存屏障Unsafe类java版本JDK1.8Unsafe简介在正式的开讲 juc-atomic框架系列之前,有必要先来了解下Java中的Unsafe类。Unsafe类是在sun.misc包下,不属于Java标准。但是很多Java的基础类库,包括一些被广泛使用的高性能开原创 2022-02-02 21:10:29 · 899 阅读 · 0 评论 -
Java并发之AQS详解的补充
同步器AQS中的等待队列与条件队列本文首发于博客园:同步器AQS中的等待队列与条件队列主要是为Java并发之AQS详解1.0的补充。前提说明:首先说明一点这里的等待队列,条件队列的意思。AQS中的等待队列是指持有资源的等待队列,大家排队等着拿资源 (锁) 的。或者说是同步队列。AQS中的条件队列就是本来我在等待队列等着拿资源的,但是一个Condition.await()被打入冷宫,从持有资源等待队列进入了没有资源的持有condition的等待队列。了解了他俩的意思我们来看条件队列的具体。在单原创 2022-02-02 15:50:44 · 630 阅读 · 0 评论 -
Java并发之AQS详解1.0
Java并发之AQS详解1.0一、概述谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!以下是本文的目录大纲:概述框架源码详解简单应用若有不正之处,请谅解和批评指正,不胜感激。大部分来自于waterystone的文章http://www.cnblogs.com/waterystone/p/4920797.html我就是看着他的文章和源码一步步理解AQS的。非常非常非常非常非常非常棒!原创 2022-02-02 15:47:50 · 206 阅读 · 0 评论 -
【并发编程的基石】CAS机制 (compareAndSwap)
[并发编程的基石]:CAS机制 (compareAndSwap)其实Java并发框架的基石一共有两块,一块是本文介绍的CAS,另一块就是AQS。在Java发展初期,java语言是不能够利用硬件提供的这些便利来提升系统的性能的。而随着java不断的发展,Java本地方法(JNI或JNA)的出现,使得java程序越过JVM直接调用本地方法提供了一种便捷的方式,因而java在并发的手段上也多了起来。而在Doug Lea提供的cucurenct包中,CAS理论是它实现整个java包的基石。什么是CAS机制C转载 2022-01-29 20:30:15 · 1071 阅读 · 0 评论 -
【java多线程基础篇】● 学习总结
Java并发是非常重要的知识!!!背景知识使用并发编程的目的是让程序运行的更快(更大限度的使用CPU资源,让程序运行更快)。并发编程的基础概念进程(Process)与线程(Thread)并行(Parallel)、并发(Concurrent)线程安全死锁饥饿活锁同步(Synchronous)和异步(Asynchronous)临界区上下文切换线程线程属性线程状态线程池什么是ABA问题ABA问题解决方法CAS机制CAS机制的ABA问题锁技术锁的分类同步锁——Ree原创 2021-12-29 21:17:36 · 1568 阅读 · 0 评论 -
双重检查锁Double Checked Locking Pattern的非原子操作下的危险性
Double Checked Locking Pattern即双重检查锁模式。双重检查锁模式是一种软件设计模式,用于减少获取锁的开销。程序首先检查锁定条件,并且仅当检查表明需要锁时才才获取锁。延迟初始化就是我们常说的懒加载是一种常用的策略,用于延迟对象初始化,直到它第一次被访问。在多线程环境中,初始化通常不是线程安全的,因此需要锁来保护临界区。由于只有第一次访问需要锁定,因此使用双重检查锁来避免后续访问的锁定开销。然而,在许多语言和硬件上,设计可能是不安全的。Double-Checked Locki原创 2022-01-20 15:44:04 · 642 阅读 · 0 评论