多线程与高并发编程
并发编程:包括多线程、CAS、AQS、锁、并发工具等
FlowYJ
使劲学习,知道的越多,不知道的就越多。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
并发编程-volatile关键字的底层实现原理
1.volatile的内存语义 1.1 volatile的特性 一个volatile变量自身具有以下三个特性: 可见性:即当一个线程修改了声明为volatile变量的值,新值对于其他要读该变量的线程来说是立即可见的。而普通变量是不能做到这一点的,普通变量的值在线程间传递需要通过主内存来完成。 有序性:volatile变量的所谓有序性也就是被声明为volatile的变量的临界区代码的执行是有顺序的,即禁止指令重排序。 受限原子性:这里volatile变量的原子性与synchronized的原子性是不同的转载 2020-09-22 14:22:46 · 370 阅读 · 0 评论 -
并发编程实战-读写锁ReentrantReadWriteLock使用
模拟一个简单的缓存管理 public static void main(String[] args) { ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); Map<String, Object> map = new HashMap<>(); // 读锁,共享锁 ReentrantReadWriteLock.ReadLock readLock = lock.readLock();原创 2020-09-18 17:12:31 · 196 阅读 · 0 评论 -
并发编程实战:CountDownLatch和CyclicBarrier的使用(实战应用)
模拟一群朋友相约聚餐,大家都到了就开始吃饭,大家都吃完饭了就去结账,并且约定谁最后到达饭店,谁就买单。 代码如下: package com.jinke.deliver.pool; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Random; import java.util.concurrent.Bro原创 2020-07-08 11:09:34 · 443 阅读 · 0 评论 -
多线程与高并发学习总结(一)
偏向锁: 记录第一次进来线程的id,当下一次有线程进来的时候,就比较线程id是否是之前的那个线程,如果是,就跳过加锁的过程,不是则进行锁升级,进入自旋锁 自旋锁: 拿锁的时候一直自旋等待,一直转圈,直到其他线程释放锁,然后拿到锁。如果一直拿不到,那么久升级为重量级锁(synchronize)【适合线程数少,执行时间短的那种】,消耗CPU 重量级锁: 线程多,执行时间长的。 volatile关键字 1)保证变量的可见性:某个线程对变量值的改变对于其他线程来说是不能马上可见的,需要靠CPU的缓存原创 2020-09-16 16:25:46 · 282 阅读 · 0 评论
分享