并发包
文章平均质量分 94
java叶新东老师
你需要悄悄加班,默默写BUG,然后坑死所有人!
展开
-
【多图预警】带你了解ReentrantLock底层执行原理、揭开AQS的神秘面纱
什么是AQSAQS全名为AbstractQueuedSynchronizer ,是JDK1.5之后并发包java.util.concurrent(简称JUC)里面的一个抽象类类,这是一个在并发编程很常用的工具类,看名字就知道,这是一个队列,并且是线程安全的队列,比较特别的是,在操作数据的时候,是使用CAS(Compare And Swap)来保证原子性的,而不是大家熟知的synchronized;使用这个AQS可以实现ReentrantLock、CountDownLatch(倒计时门栓)、Semaphor原创 2021-07-10 23:55:15 · 988 阅读 · 6 评论 -
ReentrantLock使用Condition实现线程的等待和唤醒
ReentrantLock ReentrantLock的出现是为了替代synchronized,因为使用lock锁之后代码会更加简洁,增加易读性,但是在jdk1.6之后,synchronized增加了一个锁升级的概念,所以从jdk1.6开始,都优先使用synchronized,这不代表着ReentrantLock就要废弃了,synchronized 是一个非公平锁,若要实现公平锁就得使用ReentrantLock;所以啊,没有万能的工具,但可以通过场景的不同而选择最适合的工具来使用;Condi...原创 2021-07-04 12:52:53 · 1860 阅读 · 1 评论 -
图解ConcurrentHashMap的前世今生
前言 首先呢,想要了解ConcurrentHashMap, 你得先了解HashMap,可以看我另一个帖子 :HashMap底层原理以及 LinkedHashMap、HashTable 、HashSet 四者区别 为什么要先了解HashMap呢? 因为HashMap是线程不安全的类,只适合在单线程上使用,既然使用受限,那就意味着它的结构相对比较简单,所以呢,先学HashMap在来了解ConcurrentHashMap将会更好理解,达到锦上添花的作用,事实也是如此,因为Concurren...原创 2021-06-29 23:13:17 · 1002 阅读 · 8 评论