JUC
文章平均质量分 85
王洛伊
这个作者很懒,什么都没留下…
展开
-
JUC多并发编程-->Synchronized与锁升级、AQS、ReentrantReadWriteLock
无锁、偏向锁、轻量级锁、重量级锁对象头标志位。原创 2024-02-28 17:40:46 · 851 阅读 · 0 评论 -
JUC多并发编程-->ThreadLocal
JVM内部维护了一个线程版的Map(通过ThreadLocal对象的set方法,结果把ThreadLocal对象自己当做key放讲了ThreadLoalMap中),每个线程要用到这个T的时候,用当前的线程去Map里面获取,通过这样让每个线程都拥有了自己独立的变量,人手一份,竞争条件被彻底消除,在并发模式下是绝对安全的恋量。(自己用自己的变量不麻烦别人,不和其他人共享,人人有份,人各一份),主要解决了让每个线程绑定自己的值,通过使用。统一设置初始值,但是每个线程对这个值的修改都是各自线程互相独立的。原创 2024-02-02 18:26:44 · 843 阅读 · 0 评论 -
JUC多并发编程-->CAS和原子操作类
再次强调,由于CAS是一种系统原语,原语属于操作系统用语范畴,是由若于条指令组成的,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执行过程中不允许被中断,也就是说CAS是一条CPU的原子指令,不会造成所谓的数据不一致问题。CAS 是实现自旋锁的基础,CAS 利用 CPU 指令保证了操作的原子性,以达到锁的效果,至于自旋呢,看字面意思也很明白,自己旋转。是指尝试获取锁的线程不会立即阻寒,而是采用循环的方式去尝试获取锁,当线程发现锁被占用时,会不断循环判断锁的状态,直到获取。对象的属性修改原子类。原创 2024-01-30 17:02:12 · 925 阅读 · 0 评论 -
JUC多并发编程-->JMM
JMM java 内存模型:MM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存它仅仅描述的是,通过这组规范定义了程序中(尤其是多线程)各个变量的读写访问方式并决定一个线程对共享变量的写入何时以及如何变成对另一个线程可见,关建技术点都是围绕多线程的展开的。原创 2024-01-22 14:47:53 · 800 阅读 · 0 评论 -
JUC多并发编程-->中断机制
若要中断一个线程,你需要手动调用该线程的interrupt方法,该方法也仅仅是将线程对象的中断标识设成true;接着你需要自己写代码不断地检测当前线程的标识位,如果为true,表示别的线程请求这条线程中断,此时究竟该做什么需要你自己写代码实现。每个线程对象中都有一个中断标识位,用于表示线程是否被中断:该标识位为true表示中断,为false表示未中断:过调用线程对象的interrupt方法将该线程的标识位设为true;可以在用到的线程中调用,也可以在自己的线程中调用。分别是阻塞线程和解除阻塞线程。原创 2024-01-19 14:15:38 · 919 阅读 · 1 评论 -
JUC多并发编程-->多线程锁
一个对象中如果有多个synchronized方法,某一时刻,只要一个线程去调用了其中的一个synchronized方法,其他线程都只能等待。非公平锁:多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的环境下,有可能造成优先级翻转或者饥饿的状态。系然资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。一个线程中的多个流程可以获取同一把锁,持有这把同步锁可以再次进入自己可以获取自己的内部锁。原创 2024-01-09 22:08:30 · 745 阅读 · 0 评论 -
JAVA函数接口
函数接口原创 2024-01-04 16:03:50 · 309 阅读 · 0 评论 -
JUC多并发编程 --> CompletableFuture详解
JUC多并发编程 --> CompletableFuture详解原创 2024-01-04 15:45:01 · 1023 阅读 · 3 评论