Loading

摘要: 在阅读完 JUC 包下的 AQS 源码之后,其中有很多疑问,最大的疑问就是 state 究竟是什么含义?并且 AQS 主要定义了队列的出入,但是获取资源、释放资源都是交给子类实现的,那子类是怎么实现的呢?下面开始了解 ReentrantLock。 阅读全文
posted @ 2020-11-05 22:37 程序员小航 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 又要开发新项目了,还是创建新项目,怎么办?老大说按照 xxx 项目的结构创建一个新项目就可以了。 阅读全文
posted @ 2020-11-05 22:29 程序员小航 阅读(203) 评论(0) 推荐(0) 编辑
摘要: AbstractQueuedSynchronizer 抽象队列同步器,简称 AQS 。是在 JUC 包下面一个非常重要的基础组件,JUC 包下面的并发锁 `ReentrantLock` `CountDownLatch` 等都是基于 AQS 实现的。所以想进一步研究锁的底层原理,非常有必要先了解 AQS 的原理。 阅读全文
posted @ 2020-11-05 22:24 程序员小航 阅读(167) 评论(0) 推荐(0) 编辑
摘要: LockSupport 是 JUC 中常用的一个工具类,主要作用是挂起和唤醒线程。在阅读 JUC 源码中经常看到,所以很有必要了解一下。 阅读全文
posted @ 2020-11-05 21:07 程序员小航 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 在介绍 AtomicInteger 时,已经说明在高并发下大量线程去竞争更新同一个原子变量时,因为只有一个线程能够更新成功,其他的线程在竞争失败后,只能一直循环,不断的进行 CAS 尝试,从而浪费了 CPU 资源。而在 JDK 8 中新增了 LongAdder 用来解决高并发下变量的原子操作。下面同样通过阅读源码来了解 LongAdder 。 阅读全文
posted @ 2020-11-05 10:06 程序员小航 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 业务开发中经常使用 ThreadLocal 来存储用户信息等线程私有对象... ThreadLocal 内部构造是什么样子的?为什么可以线程私有?常说的内存泄露又是怎么回事? 阅读全文
posted @ 2020-11-05 00:30 程序员小航 阅读(555) 评论(0) 推荐(0) 编辑