![](https://img-blog.csdnimg.cn/20200705213414190.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java并发编程
文章平均质量分 74
高并发相关
方圆想当图灵
怕什么真理无穷,进一寸有进一寸的欢喜
展开
-
“等待,业务,唤醒“ —— Java并发编程中的生产者消费者问题
halo,大家好,我是`方圆`,最近在整理之前写过的博客儿,把草率的和内容臃肿的进行了删除和重写,还是想让博客的内容质量高一些吧,这篇博客儿想写一写并发编程中的生产者消费者问题,之前面试被问过,我也给这个问题总结了一个很好理解的思路,“等待,业务,唤醒”,反正!看下去就行了!原创 2021-10-30 21:07:10 · 154 阅读 · 0 评论 -
我们对Atomic包下的这些内容,了解多少?
1. 重新认识认识原子类2. 原子类纵览3. AtomicIntegerFieldUpdater3.1 代码演示4. Adder累加器4.1 LongAdder代码测试4.2 AtomicLong代码测试4.3 总结5. Accumulator累加器1. 重新认识认识原子类原子类的作用与锁类似,是为了保证并发情况下的线程安全,而且它的粒度更细,效率更高2. 原子类纵览3. AtomicIntegerFieldUpdater.原创 2020-08-16 22:19:00 · 377 阅读 · 0 评论 -
“琐事”? “锁事”。
1. synchronized2. 你知道Git是乐观锁吗?2.1 在MySQL中实现乐观锁2.2 乐观锁的适用场景3. 公平锁和非公平锁3.1 来,看看这个特例4. 读写锁的插队策略4.1 代码测试5. 写一个死锁5.1 代码5.2 总结6. 自旋锁6.1 手写一个简单的自旋锁1. synchronized它会在发生异常时自动释放锁2. 你知道Git是乐观锁吗?当我们在向远程仓库push的时候,git会检查远端仓库的版本是不是要比我们现在的.原创 2020-08-16 17:24:12 · 1500 阅读 · 0 评论 -
CAS是CPU指令,懂了吧!没懂?那就进来看看!
目录1. 你给我说说,嘛是CAS?1.1 现在我们来自己写个CAS原理Demo2. 分析AtomicInteger的源码2.1 我们重点看看getAndIncrement方法3. 简单说说Unsafe类1. 你给我说说,嘛是CAS?不,你想听。CAS的中文名叫“比较并交换”,它是CPU指令,不能被打断,也是我们常见的乐观锁的实现原理,CAS中有三个操作数,分别为内存值,预期值,和要修改的值,当且仅当内存值和预期值相同,才会将其修改,否则不修改。1.1 .原创 2020-08-08 18:32:26 · 1301 阅读 · 0 评论 -
ThreadLocal不会难到我们吧?
目录1. Thread、ThreadLocal和ThreadLocalMap三者的关系2. get方法3. set方法3.1 createMap方法4. remove方法4.1 重点说一说它的Value值内存泄漏问题4.1.1 先看看Entry中强引用和弱引用4.1.2 OOM问题我们需要注意的点5. ThreadLocal使用的两大场景5.1 每个线程需要一个独享的对象5.2 每个线程需要保存全局变量1. Thread、ThreadLocal和ThreadLo.原创 2020-08-08 17:16:00 · 715 阅读 · 1 评论 -
都说AQS不好理解,那我们今天就来进个阶儿,好好说到说到
1. AQS在CountDownLatch中的应用1.1 其中的AQS静态内部类1.2 构造方法1.3 getCount()方法1.4 CountDown()方法1.5 await()方法1.6 总结2. AQS在Semaphore中的应用2.1 acquire()方法2.2 release()方法2.3 总结3. AQS在ReentrantLock中的应用3.1 lock()方法3.2 unlock()方法3.3 总结4. 自己实现一个AQS5. 总结.原创 2020-08-02 22:55:26 · 198 阅读 · 0 评论 -
“我愿为并发编程花很多时间” —— Java并发编程中的基础知识
并发编程的基础知识:Java默认开启的线程、线程的状态、线程池的状态、wait和sleep的区别、synchronized和lock的区别、死锁问题的堆栈信息查看原创 2020-04-25 22:35:14 · 281 阅读 · 0 评论 -
Java并发基础知识
大家好,我是方圆目录1. 创建线程的三种方式2. 线程停止3. 线程休眠4. 线程礼让5. 线程插队6. 线程优先级7. 同步代码块8. 死锁9. 线程池1. 创建线程的三种方式2. 线程停止3. 线程休眠4. 线程礼让5. 线程插队6. 线程优先级7. 同步代码块8. 死锁死锁的四个必要条件互斥条件:如果一个资源被一个线程使用,那么其他的线程想要获得该资源,只能等待请求和保持条件:线程已经有一个资源了,还想要另外一个资源,而另外一个资源已经被其他线程占用.原创 2020-07-27 17:03:41 · 160 阅读 · 0 评论