
并发编程
文章平均质量分 66
xMustang
知识点,串成线,织成网
展开
-
4. AQS
1. AQS1.1 CLH 队列锁1.2 AbstractQueuedSynchronizer队列同步器 AbstractQueuedSynchronizer(AQS),是用来构建锁或者其他同步组件的基础框架,它使用了一个 int 成员变量 state 表示同步状态(加锁状态),通过内置的 FIFO 队列来完成资源获取线程的排队工作。AQS 是基于 CLH 的变种实现。2. 显式锁2.1 Lock 接口标准使用范式是:解锁代码要放在 finally 中,确保业务代码出现异常时,可以解锁。原创 2022-04-11 00:50:12 · 313 阅读 · 0 评论 -
3. CAS
1. CASCAS 是无锁化编程,涉及 3 个值,内存地址、旧值、新值。1.1 CAS 的问题ABA 问题解决 ABA 问题方式是:加版本号。开销问题自旋 CAS 如果长时间不成功,会给 CPU 带来非常大的执行开销。只能保证一个共享变量的原子操作解决:想办法把多个变脸合并成一个变量,进行操作。2. 原子操作2.1 更新基本类型类AtomicBoolean,AtomicInteger,AtomicLongpublic class UseAtomicInt { stati原创 2022-04-10 23:28:39 · 299 阅读 · 0 评论 -
2. 并发工具类
1. fork/join1.1 分而治之1.2 工作密取当前线程的 Task 已经全被执行完毕,则自动取到其他线程的 Task 池中取出 Task 继续执行。ForkJoinPool 中维护着多个线程(一般为 CPU 核数)在不断地执行 Task,每个线程除了执行自己职务内的 Task 之外,还会根据自己工作线程的闲置情况去获取其他繁忙的工作线程的 Task,如此一来就能能够减少线程阻塞或是闲置的时间,提高 CPU 利用率。1.3 标准范式public class MakeArray {原创 2022-04-10 22:56:10 · 200 阅读 · 0 评论 -
1.线程基础
线程基础、Java 线程基础原创 2022-04-09 18:46:22 · 631 阅读 · 0 评论