![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
文章平均质量分 69
Java并发编程专栏
韩某人的个人笔记
这个作者很懒,什么都没留下…
展开
-
JUC--ReentrantLock
ReentrantLock基于AQS,它实现了公平锁和非公平锁,在开发中可以用它对共享资源进行同步,此外,和synchronized一样,ReentrantLock支持可重入锁,但ReentrantLock在调度上更灵活。首先来看ReentrantLock的继承关系,ReentrantLock实现了Lock接口。在面向对象的概念中,既然ReentrantLock是Lock的一种具体实现,呢么它必然拥有Lock的抽象意义。Lock只是定义了一些方法的语义,规定了它的 实现类需要满足这些语义。关于Ree原创 2021-11-30 16:01:12 · 224 阅读 · 0 评论 -
JUC--AQS设计
尝试设计CAS能够原子的对一个值进行写操作,那么可以将这个值(称为status)作为竞争资源的标记位。在多个线程想要去修改共享资源时,先来读取status,看能不能获取到写status的权限。拒绝其它线程的调用怎么设计呢?有两种业务场景:有的业务可能只是快速尝试获取一下共享资源,获取不到也没关系,会进行其它处理,有的业务线程一定要获取共享资源才能进行下一步处理,如果没有获取到,愿意等待。第一种场景直接返回共享资源当前的状态就可以了,第二种场景不适合自旋,我们设计一个队列让这些线程排队。队列头部的线程自旋原创 2021-11-30 12:24:45 · 270 阅读 · 0 评论 -
JUC--生产者消费者
1 题目:一个初始值为0的变量,两个线程对其交替操作,一个加一 一个减一import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Test01 { /** * 线程 操作 资源类 * 判断 干活 通知 * 防止虚假唤醒原创 2021-11-18 16:53:56 · 57 阅读 · 0 评论 -
ThreadLocal的理解
一致性问题解决办法排队(例如:锁,互斥量,管程,屏障等)投票(例如Paxos,Raft等)这俩需要额外开销避免(例如:ThreadLocal等)定义正如 JDK 注释中所说的那样: ThreadLocal 类提供线程局部变量,它通常是私有类中希望将状态与线程关联的静态字段。一个线程局部变量在多个线程中,分别有独立的值。特点:简单(开箱即用),快速(无额外开销),安全(线程安全)场景多线程场景(资源持有,线程一致性,并发计算,线程安全等场景)在一个进程当中线程是资源调度的基本单位,操作系原创 2021-11-18 15:18:58 · 160 阅读 · 0 评论