摘要: StampedLock简介 StampedLock是比ReentrantReadWriteLock更快的一种锁,支持乐观读、悲观读锁和写锁。和ReentrantReadWriteLock不同的是,StampedLock支持多个线程申请乐观读的同时,还允许一个线程申请写锁。 乐观读并不加锁 Stamp 阅读全文
posted @ 2021-08-25 08:42 张孟浩Jay 阅读(3842) 评论(1) 推荐(0) 编辑
摘要: ReentrantReadWriteLock的适用场景 ReentrantReadWriteLock是基于AQS的,对AQS不太了解的建议先看下我之前写的关于AQS源码分析的文章 AQS源码详细分析,让你掌握AQS原理,独占锁、共享锁、Condition 对于写少读多的场景,读写锁相对于独占锁Ree 阅读全文
posted @ 2021-08-25 08:10 张孟浩Jay 阅读(89) 评论(1) 推荐(0) 编辑
摘要: 并发是什么呢? 并发指的是Java中有多线程并发运行。 为什么会有并发? 因为一个线程在执行的过程中不仅会用到cpu资源,还会用到IO,也就是输入输出。IO的速度远远比不上CPU的运算速度。如果线程在IO的时候,不放弃CPU资源,就会导致CPU空闲,以至于CPU的利用率十分低下。所以就引入了多线程, 阅读全文
posted @ 2021-08-22 10:14 张孟浩Jay 阅读(427) 评论(1) 推荐(0) 编辑
摘要: 编译器会对程序进行优化,会调整代码的顺序。如果贸然调整顺序的话,可能会引发线程不安全! Java指定了Happens-Before六条规则,要求编译器必须满足Happens-Before原则,来控制数据的内存可见性。Happens-Before就是在什么之前发生的意思。 1、在同一线程中,按照程序代 阅读全文
posted @ 2021-08-22 10:13 张孟浩Jay 阅读(160) 评论(1) 推荐(0) 编辑
摘要: Java为了解决并发的原子性,提供了以下两个解决方案: 1、Synchronized关键字 2、Lock 这篇文章我们先说一下Synchronized关键字,Lock等着下篇文章再说。 Synchronized是隐式锁,当编译的时候,会自动在同步代码的前后分别加入monitorenter和monit 阅读全文
posted @ 2021-08-22 10:12 张孟浩Jay 阅读(760) 评论(1) 推荐(0) 编辑
摘要: 这篇文章我们来说下AQS。 1、AQS简介 AQS全称为AbstractQueuedSynchronizer,是ReentrantLock、Semaphore、CountDownLatch等并发工具的基础类。 AQS与Synchronized有一个区别是: Synchronized中所有阻塞的线程都 阅读全文
posted @ 2021-08-22 10:11 张孟浩Jay 阅读(519) 评论(2) 推荐(0) 编辑
摘要: ReentrantLock是Java中常用的锁工具,今天我们来了解一下。本篇文章设计到AQS,如果了解到不太清楚的话,可以看我之前写的文章AQS源码详细分析,让你掌握AQS原理,独占锁、共享锁、Condition ReentrantLock概述 ReentrantLock是基于我们之前讲过的AQS构 阅读全文
posted @ 2021-08-22 10:10 张孟浩Jay 阅读(117) 评论(1) 推荐(0) 编辑
摘要: CountDownLatch简介 简介:CountDownLatch是基于AQS共享锁的一个锁工具,用来线程同步问题,针对的是一个线程必须等待多个线程完成后才运行的场景,count就是代表线程的个数。 CountDownLatch基于AQS的共享锁,如果你对这块知识还不了解,可以看我之前写的文章:A 阅读全文
posted @ 2021-08-22 10:09 张孟浩Jay 阅读(42) 评论(0) 推荐(0) 编辑
摘要: Semaphore简介 Semaphore就是我们常说的信号量,本质就是基于AQS的一个共享锁。对AQS不太了解的可以看我之前写的AQS源码解析的文章AQS源码详细分析,让你掌握AQS原理,独占锁、共享锁、Condition Semaphore常常被用作限流器,通过共享锁对资源进行限制。 Semap 阅读全文
posted @ 2021-08-22 10:07 张孟浩Jay 阅读(93) 评论(1) 推荐(0) 编辑
摘要: CyclicBarrier简介 CyclicBarrier也是一种线程同步工具,用于多个线程之间的同步,也是适用于一个线程等待多个线程。和CountDownLatch相比,CyclicBarrier有多个改进: 1、CyclicBarrier可以循环利用 2、CyclicBarrier中的线程的同步 阅读全文
posted @ 2021-08-22 09:59 张孟浩Jay 阅读(89) 评论(1) 推荐(0) 编辑