JUC并发编程第七章—共享模型之工具2

JUC并发编程第七章—共享模型之工具2

JUC并发编程第七章 JUC工具类 1. AQS AQS(AbstractQueuedSynchronizer)是 Java 并发编程中的一个重要的框架,通常用于多线程编程和并发控制。它提供了一种管理共享资源、同步线程执行以及协调多个线程之间操作的机制。AQS是Java中实现锁、信号量、倒计时门栅等

JUC并发编程第六章—共享模型之工具

JUC并发编程第六章 共享模型之工具 1. 线程池 1.1 ThreadPoolExecutor 1.1.1 线程池状态 ThreadPoolExecutor 使用 int 的高 3 位来表示线程池状态,低 29 位表示线程数量;也就是一个整数表达了2层含义。 状态名 高3位 接收新任务 处理阻塞队

JUC并发编程第六章—共享模型之工具
JUC并发编程第五章—共享模型之不可变

JUC并发编程第五章—共享模型之不可变

JUC并发编程第五章 共享模型之不可变 如果一个对象是不可以改变的,没有人能够修改这些变量,那么即使他是共享的,那也是线程安全的。 所以本章我将要讲解: 不可变类的使用 不可变类的设计 无状态类的设计 1. 日期转换的问题 1.1 问题提出 下面的代码的运行: @Slf4j public class

JUC并发编程第四章—共享模型之无锁

JUC并发编程第四章 共享模型之无锁 1. 问题提出 现在有如下代码: interface Account { // 获取余额 Integer getBalance(); // 取款 void withdraw(Integer amount); /**

JUC并发编程第四章—共享模型之无锁
JUC并发编程第三章—共享模型之内存

JUC并发编程第三章—共享模型之内存

JUC并发编程第三章 共享模型之内存 上一章讲解的 Monitor 主要关注的是访问共享变量时,保证临界区代码的原子性,这一章我们进一步深入学习共享变量在多线程间的【可见性】问题与多条指令执行时的【有序性】问题。 1.1 Java 内存模型 Java内存模型(Java Memory Model,JM

JUC并发编程第二章—共享模型之管程

JUC并发编程第二章 共享模型之管程 1.1 共享带来的问题 1.1.1 小故事: 老王(操作系统)有一个功能强大的算盘(CPU),现在想把它租出去,赚一点外快。 小南、小女(线程)来使用这个算盘来进行一些计算,并按照时间给老王支付费用。但小南不能一天24小时使用算盘,他经常要小憩一会(sleep)

JUC并发编程第二章—共享模型之管程
JUC并发编程第一章—进程与线程

JUC并发编程第一章—进程与线程

JUC并发编程第一章 进程与线程 1. 进程和线程 1.1 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的 当一个程序被运行,从磁盘加载这个程序的代码至内