Java
2025-03-09 20:39:42 3 举报
AI智能生成
JAVA
作者其他创作
大纲/内容
基础
集合
List
ArrayList
LinkedList
Vector
Set
HashSet
LinkedHashSet
TreeSet
Queue
PriorityQueue
BlockingQueue
Map
HashMap
LinkedHashMap
HashTable
TreeMap
泛型
IO
反射
JUC
线程、进程
JMM
屏蔽不同平台内存的访问的差异
规定了工作内存和主存以及它们的同步过程
读取、载入、使用、赋值、存储、写入、解锁、锁定
MESI
as-if-serial:指令重排不能影响单线程的结果
happen-befor:a 操作 happen-befor b,a 的结果对 b 可见,锁或者 volatile
volatile
可见性、有序性
基于 lock 前缀指令将数据同步到主存,在通过 MESI 同步到各个 cpu 缓存
内存屏障
锁
synchronized
基于 JVM 实现,本质是监视器对象获取,每个对象都有一个 monitor 对象(monitorenter、monitorexit)
作用于实例方法、静态方法和代码块
JDK 8 做了很多优化,锁消除、锁粗化、锁升级
可重入非公平锁
ReentrantLock
基于 AQS 实现
可以选择公平或非公平锁
锁可中断
锁获取可支持超时设置
CAS
比较并交换
ABA
自旋时间长
Atomic 原子类
基于 CAS
ThreadLocal
使得每个线程能拥有一个专属的本地变量
每个线程有 ThreadLocalMap,key 为 ThreadLocal,value 为 Object
key 是弱引用,value 是强引用,有内存泄露,解决办法使用完后掉 remove 方法
ITL、TTL
线程池
提高资源复用、线程可管理性
核心线程数、最大线程数、队列大小、非核心线程数存货时间、单位、线程工厂、拒绝策略
队列满了才会启动非核心线程
线程池数量设计标准,有多少个线程池,是否核心业务线程池,是大线程小队列,否小线程大队列,仅有一个大线程大队列,一般要考虑线程池隔离业务
CompletableFuture
在 Future 的异步回调的思想下,加入了任务编排的功能
runAsync、supplyAsync
then...
allOf、anyOf
AQS 与并发工具类
抽象队列同步器
目的是提供一套通用框架,帮助开发者快速实现一个同步器
主要提供三个功能,同步状态管理、线程阻塞、线程唤醒
state、双向队列
state 表示锁的状态,双向队列来维持等锁的线程
CountDownLatch、Semaphore
JVM
.class 文件
魔数
版本号
常量池
字面量
符号引用
访问标识
当前类、父类、接口索引
字段信息
方法信息
类加载子系统
类加载过程
加载
链接
验证
准备
解析
初始化
类加载器
BootstrapClassLoader
jdk/lib 下
ExtensionClassLoader
jre/lib/ext
AppClassLoader
classpath
双亲委派机制
运行时数据区域
程序计数器
虚拟机栈
局部变量表
操作数栈
动态链接
本地方法栈
堆
新生代
Eden
S0
S1
老年代
元空间
永久代
方法区
对象
创建
类加载检查
分配内存
指针碰撞
空闲链表
CAS + 重试
TLAB
初始化零值
设置对象头
执行初始化方法
访问
句柄池
指针
内存布局
对象头
实例信息
对齐填充
执行引擎
解释器
JIT
垃圾回收器
垃圾识别算法
引用计数法
可达性分析法
垃圾回收算法
标记-清除
标记-复制
标记-整理
垃圾回收器
Serial / Serial Old
Parallel / Parallel Old
ParNew / CMS
G1
空间分配担保原则
进入老年代的条件
调优
方法论
参数
0 条评论
下一页