juc
文章平均质量分 81
filling_l
湖南大学 软件工程硕士
展开
-
AQS ReentrantLock 原理 源码详解
文章目录一 概述1.1 设计思想1.2 如何使用 一 概述 AQS(AbstractQueuedSynchronizer) ,类如其名,抽象的队列同步器,定义了一套多线程访问共享资源的同步框架,许多类实现都依赖于它,如Semaphore,ReentrangLock底层都是使用了这个框架。使用AQS能够简单高效的构造出大量的同步器。AQS具备一下特性,阻塞等待队列,共享/独占,公平/非公平,可重入,允许中断。 1.1 设计思想 AQS维护了一个volatile int state表示共享变量,和一个FIFO线原创 2021-06-16 23:43:07 · 304 阅读 · 2 评论 -
AtomicLong LongAdder 源码解析 Doug Lea太强了!!!
文章目录一 AtomicLong原理二 LongAdder原理三LongAdder源码 一 AtomicLong原理 AtomicLong通过cas+自旋更新AtomicLong中的value值,进而保证value的原子性,N个线程同时改变value的值,只能有一个线程更新成功,其他线程这次的cas是失败的 由于一次只能有一个线程修改成功,其他线程得要自旋,一直到修改失败,在并发量比较高的情况下,可能会导致这些线程占用长时间修改值失败,导致cas次数过多。 二 LongAdder原理 在高并发场景下Lon原创 2021-06-08 11:09:17 · 552 阅读 · 4 评论 -
FutureTask源码剖析
一类介绍 FutureTask类实现了Runnable和Future类接口,定义一个可以被取消的异步计算任务,提供了开始和取消任务接口,当计算完成可以查询执行结果,如果任务没有完成,get接口会阻塞获取结果线程, 二 关键属性 任务状态 private volatile int state; // 初始化 当前任务没执行 private static final int NEW = 0; //当前任务正在结束,尚未完全结束,一种临界状态原创 2021-06-01 13:41:26 · 210 阅读 · 0 评论 -
javaThread类 API详解
文章目录一 线程状态转换图二 线程切换三 Thread 类API 一 线程状态转换图 Java中线程从创建到最终消失,要经历以下几个状态, NEW ,线程还没启动 RUNNABLE 线程运行在jvm中,但是在等待cpu BLOCKED 线程在等待monitor lock WAITING, 一个线程等待另一个线程的特定操作结果,一般是由于调用了如下方法 wait(),join(),park()方法,没有time 一个线程在这个状态由于等待原创 2021-03-04 22:15:09 · 197 阅读 · 2 评论