并发编程
文章平均质量分 79
从运用到源码分析,深入体会并发编程
渝北最后的单纯
让我康康你的字节范~
展开
-
JUC笔记合集
从浅入深讲解JUC并发工具包,结合OS、计算机组成原理以及JVM的内容加深对锁、线程控制的理解。原创 2022-10-27 20:14:11 · 129 阅读 · 0 评论 -
JUC笔记(四) --- 内存共享模型
Java内存模型、可见性、volatile解析、有序性、指令重排、深入了解synchronized和volatile的区别原创 2022-11-01 16:30:37 · 233 阅读 · 0 评论 -
JUC笔记(三) --- 线程的通信
Java线程间的通信原创 2022-10-27 20:27:13 · 325 阅读 · 0 评论 -
JUC笔记(二) --- Java线程
如果在构造 Thread 对象时传递了 Runnable 参数,则线程启动后会调用 Runnable 中的 run 方法,否则默。当 Context Switch 发生时,需要由操作系统保存当前线程的状态,并恢复另一个线程的状态,Java 中对应的概念。默认情况下,Java 进程需要等待所有线程都运行结束,才会结束。有一种特殊的线程叫做守护线程,只要其它非守。因为以下一些原因导致 cpu 不再执行当前的线程,转而执行另一个线程的代码。护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束。原创 2022-10-27 20:18:12 · 475 阅读 · 0 评论 -
JUC笔记(一) --- 计算机基础
指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。相同计算机进程间通信?好像是信号量、管道等,还没具体用过。不同计算机进程通信:如http协议。进程可以认为是一个应用启动。将代码从磁盘加载到内存。原创 2022-10-27 20:09:58 · 539 阅读 · 2 评论 -
JUC笔记(五) --- 无锁共享模型
而LongAdder则有两个值用于累加,一个是base,它的作用类似于AtomicInteger里面的value,在没有竞争的情况不会用到cells数组,这时使用base做累加,有了竞争后。设想如果我们有个long类型的变量a,它不是数组的一部分,而是一个单独的变量,并且还有另外一个long类型的变量b紧挨着它,那么当加载a的时候将免费加载b。当CPU执行运算的时候,它先去L1查找所需的数据,再去L2,然后L3,最后如果这些缓存中都没有,所需的数据就要去主内存拿。,因为其它缓存中的a不是最新值了。原创 2022-11-03 16:17:19 · 354 阅读 · 0 评论 -
JUC笔记(六) --- 不可变共享模型
英文名称:Flyweight pattern. 当需要重用数量有限的同一类对象时。原创 2022-11-03 16:20:02 · 395 阅读 · 0 评论 -
ReentrantLock与ReentrantReadWirteLock 原理
加锁解锁流程先从构造器开始看,默认为非公平锁实现没有竞争时第一个竞争出现时Thread-1 执行了当前线程进入 acquireQueued 逻辑shouldParkAfterFailedAcquire 执行完毕回到 acquireQueued ,再次 tryAcquire 尝试获取锁,当然这时state 仍为 1,失败trueThread-0 释放锁,进入 tryRelease 流程,如果成功当前队列不为 null,并且 head 的 waitStatus = -1,进入 unparkSuc原创 2022-11-03 16:35:36 · 554 阅读 · 1 评论 -
Java并发框架-AQS原理
全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架特点:用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和释放锁。原创 2022-11-03 16:22:39 · 230 阅读 · 0 评论