JUC
文章平均质量分 59
Key~美好的每一天
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java中的volatile关键字
volatile是一种轻量级的同步机制,它相比于synchronized这种重量级锁更轻量,因为它不会造成线程上下文的切换,但是同步性更差,volatile关键字可以保证变量的可见性以及禁止指令重排序。原创 2025-03-15 19:49:56 · 352 阅读 · 0 评论 -
一文了解CAS
CAS全程:Compare And Swap(比较并交换),是乐观锁思想的一种体现,能在无锁的情况下保证线程安全。Java中的CAS是由native方法实现的,底层通过硬件层面保证了CAS操作的原子性。CAS是如何保证线程安全的?如下:CAS操作会去比较工作内存中的旧值和内存中的预期值是否相等,相等才会将其改成新值。如下线程A来修改a,a旧值是100,去和主内存中的a比较,发现相等了,于是在工作内存进行a++操作并同步到主内存。原创 2025-03-15 20:25:44 · 366 阅读 · 0 评论 -
synchronized原理
synchronized关键字可以保证被修饰的方法或者代码块任意时刻只有一个线程执行。原创 2025-03-16 11:11:19 · 180 阅读 · 0 评论 -
ReentrantLock的实现原理
AQS全称抽象队列同步器,是java中的一个抽象类,它提供了一个通用框架用于实现同步器。AQS中有一个state属性,默认为0,如果被某个线程修改为1了,那么这个线程就拿到了锁,可以去访问资源。多线程来抢锁的时候,使用CAS操作来修改state的值,没有修改成功的线程会加入AQS内部的一个双向队列中阻塞等待,当锁释放时,队头线程会被唤醒,尝试自旋抢锁,没抢到就阻塞。原创 2025-03-16 15:27:25 · 198 阅读 · 0 评论 -
一文了解ThreadLocal
ThreadLocal是每个线程私有的,线程可以把自己的私有数据放到ThreadLocal里面,不用担心其他线程访问到自己ThreadLocal。通过set()方法将值存入ThreadLocal或者修改值,get()方法取出值,remove()方法移除值。原创 2025-03-19 11:10:46 · 532 阅读 · 0 评论 -
线程池的核心参数
线程池帮助我们管理监控线程,通过重复利用线程,来防止频率创建和销毁线程带来的性能消耗。可以使用ThreadPoolExecutor或者Executors来创建线程。原创 2025-03-19 14:50:25 · 926 阅读 · 0 评论
分享