![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
文章平均质量分 96
Mistra丶
凡心所向,素履以往,生如逆旅,一苇以航。
展开
-
JUC---AbstractQueuedSynchronizer(AQS)解析(JDK13)
java.util.concurrent包系列文章JUC—ThreadLocal源码解析(JDK13)JUC—ThreadPoolExecutor线程池源码解析(JDK13)JUC—各种锁(JDK13)JUC—原子类Atomic*.java源码解析(JDK13)JUC—CAS源码解析(JDK13)JUC—ConcurrentHashMap源码解析(JDK13)JUC—CopyOnWr...原创 2020-04-06 23:23:39 · 570 阅读 · 1 评论 -
JUC---多线程下控制并发流程(JDK13)
一、概览控制并发流程的工具类概览二、CountDownLatch倒数计数器,倒数结束之前,一直处在等待状态,直到计时结束,此线程才能继续工作唯一的构造方法// 传入倒数计数数量public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count <...原创 2020-04-06 17:49:19 · 427 阅读 · 0 评论 -
JUC---并发队列源码解析(JDK13)
一、并发队列先看全家福并发队列又分为阻塞队列与非阻塞队列实现了BlockingQueue的就是阻塞队列,最下层左边5个。队列满的时候放不进去,队列空的时候null都取不出来,会阻塞。最右边2个就是非阻塞队列。以* Deque结尾的是双端队列,头和尾都能添加和删除。双进双出。一般使用*Queue结尾的。Queue只能一段进一端出。二、阻塞并发队列通常,应用于生产者消费者模型。阻...原创 2020-04-06 15:51:01 · 378 阅读 · 0 评论 -
JUC---CopyOnWriteArrayList源码解析(JDK13)
一、CopyOnWrite*系列CopyOnWriteArrayList和CopyOnWriteArraySet也是常用的并发集合类。他们支持并发的读写。线程安全的。不过有它的缺点。本篇就分析下CopyOnWriteArrayList的原理和源码。CopyOnWriteArraySet也是类似的。二 、CopyOnWriteArrayListCopyOnWriteArrayLis...原创 2020-04-06 13:32:22 · 360 阅读 · 0 评论 -
JUC---ConcurrentHashMap源码解析(JDK13)
一、Map家族本篇只分析ConcurrentHashMap的源码。HashMap就简略带过,但是必须先明白了HashMap的相关原理再来了解ConcurrentHashMap更好。Map是我们工作中用到最多的数据结构,key-value形式。看看整个Map家族HashMap,根据键值的hashcode寻找存储位置,查询的时候速度也非常快。线程非安全的。HashTable,在HashMa...原创 2020-04-06 11:46:04 · 341 阅读 · 0 评论 -
JUC---CAS源码解析(JDK13)
本篇介绍什么是CAS。一、什么是CAS?我认为某一个变量在内存的值是A,如果是的话,我就把它设置为B。如果不是的话,就不修改了。典型的乐观锁思想。避免多人同时修改出错。CAS方法有3个参数,内存值V,预期值A,要修改为的值B。仅当V=A时,才将内存值修改为B。否则什么都不做。最后返回现在的V。compareAndSet,compareAndSweap等等。比较并设置,比较并交换。等等操...原创 2020-04-05 19:56:36 · 344 阅读 · 0 评论 -
JUC---原子类Atomic*.java源码解析(JDK13)
一、什么是原子类不可分割性一个操作是不可中断的,在多线程下也可以保证相比于锁,原子变量可以把竞争资源缩小到变量级别,粒度更细。通常情况下比锁的效率更高,但是在高度竞争的情况下性能更低。以AtomicInteger为例,看看它的方法int get();//获取到当前值int getAndSet(int newValue) {//获取到当前值并设置新的值 return U.g...原创 2020-04-05 19:13:15 · 373 阅读 · 0 评论 -
JUC---各种锁(JDK13)
本篇偏概念性,附带部分源码。常用的锁常用的2种加锁方式synchronized和Lock。synchronized的缺点效率低,试图获得锁时不能设定超时,不能中断一个正在试图获得锁的线程不够灵活,加锁和释放的时机单一,每个锁仅有单一的条件(某个对象)无法知道是否成功获取到锁Lock作为synchronized的一种补充,他们都是可重入锁。Lock的主要方法lock():获取...原创 2020-04-05 17:26:45 · 398 阅读 · 0 评论 -
JUC---ThreadPoolExecutor线程池源码解析(JDK13)
线程池的组成线程池管理器 -> thread-pool工作线程(线程池中在运行的线程)-> t0,t1,t2…t9任务队列-> blocking-queue任务接口(task)-> 队列中的task1,task2…Executor 顶层接口,只有一个 execute方法void execute(Runnable command);Executo...原创 2020-04-01 23:18:35 · 337 阅读 · 0 评论 -
JUC---ThreadLocal源码解析(JDK13)
ThreadLocal -> 线程本地变量强调同一个请求内(同一个线程内)不同方法间的共享让某个需要用到的对象在线程间隔离(每个线程都有自己独有自己独立的对象)ThreadLocal的优点达到线程安全不需要加锁提高执行效率 高效利用内存节省开销 避免传参的麻烦Thread、ThreadLocal、ThreadLocalMap三者的关系每个Thread对象中都持有一...原创 2020-03-30 23:08:04 · 272 阅读 · 0 评论