2024年java基础283讲

java基础283讲1 目录 1 目录 1 2 JVM

大家好,我是讯享网,很高兴认识大家。



1. 目录
1. 目录 ......................................................................................................................................................... 1
2. JVM ....................................................................................................................................................... 19
2.1. 线程 ...................................................................................................................................................... 20
2.2. JVM 内存区域 ..................................................................................................................................... 21
2.2.1.
程序计数器
(
线程私有
) ................................................................................................................ 22
2.2.2.
虚拟机栈
(
线程私有
) .................................................................................................................... 22
2.2.3.
本地方法区
(
线程私有
) ................................................................................................................ 23
2.2.4.
堆(
Heap-
线程共享)
-
运行时数据区
...................................................................................... 23
2.2.5.
方法区
/
永久代(线程共享)
..................................................................................................... 23
2.3. JVM 运行时内存 ................................................................................................................................. 24
2.3.1.
新生代
.......................................................................................................................................... 24
2.3.1.1. Eden .................................................................................................................................................... 24
2.3.1.2. ServivorFrom ........................................................................................................................................... 24
2.3.1.3. ServivorTo .............................................................................................................................................. 24
2.3.1.4. MinorGC 的过程(复制-> 清空-> 互换) ....................................................................................... 24
1 eden servicorFrom 复制到 ServicorTo,年龄+1 ................................................................................... 25
2 :清空 eden se rvicorFrom ............................................................................................................................. 25
3 ServicorTo ServicorFrom 互换 ................................................................................................................ 25
2.3.2.
老年代
.......................................................................................................................................... 25
2.3.3.
永久代
.......................................................................................................................................... 25
2.3.3.1. JAVA8 与元数据 ................................................................................................................................. 25
2.4. 垃圾回收与算法 .................................................................................................................................. 26
2.4.1.
如何确定垃圾
.............................................................................................................................. 26
2.4.1.1. 引用计数法............................................................................................................................................... 26
2.4.1.2. 可达性分析............................................................................................................................................... 26
2.4.2.
标记清除算法( Mark-Sweep
.............................................................................................. 27
2.4.3.
复制算法(
copying
................................................................................................................. 27
2.4.4.
标记整理算法
(Mark -Compact) .................................................................................................. 28
2.4.5.
分代收集算法
.............................................................................................................................. 29
2.4.5.1. 新生代与复制算法 .............................................................................................................................. 29
2.4.5.2. 老年代与标记复制算法 ...................................................................................................................... 29
2.5. JAVA 四中引用类型 ........................................................................................................................... 30
2.5.1.
强引用
.......................................................................................................................................... 30
2.5.2.
软引用
.......................................................................................................................................... 30
2.5.3.
弱引用
.......................................................................................................................................... 30
2.5.4.
虚引用
.......................................................................................................................................... 30
2.6. GC 分代收集算法 VS 分区收集算法 ................................................................................................ 30
2.6.1.
分代收集算法
.............................................................................................................................. 30
2.6.1.1. 在新生代- 复制算法 ............................................................................................................................. 30
2.6.1.2. 在老年代- 标记整理算法 ..................................................................................................................... 30
2.6.2.
分区收集算法
.............................................................................................................................. 31
2.7. GC 垃圾收集器 ................................................................................................................................... 31
2.7.1. Serial
垃圾收集器(单线 程、复制算 法)
................................................................................ 31
2.7.2. ParNew
垃圾收集器(
Serial+
多线程)
................................................................................... 31
2.7.3. Parallel Scavenge
收集器(多线程 复制算法、高 效)
.......................................................... 32
2.7.4. Serial Old
收集器(单线程 标记整理算法
........................................................................... 32
2.7.5. Parallel Old
收集器(多线程标记整 理算法)
......................................................................... 33
2.7.6. CMS
收集器(多线程标 记清除算法
..................................................................................... 33
2.7.6.1. 初始标记 .............................................................................................................................................. 33
13/0 1/20 22
Page 2 of 283
2.7.6.2.
2.7.6.3.
并发标记 ..............................................................................................................................................34
重新标记 ..............................................................................................................................................34
并发清除 ..............................................................................................................................................34
2.7.6.4.
2.7.7. G1
收集器
.................................................................................................................................... 34
2.8.
JAVA IO/NIO ....................................................................................................................................... 34
2.8.1.
2.8.2.
2.8.3.
2.8.4.
2.8.5.
2.8.1.
2.8.2.
阻塞
IO
模型
................................................................................................................................ 34
非阻塞
IO
模型
............................................................................................................................ 35
多路复用
IO
模型
........................................................................................................................ 35
信号驱动
IO
模型
........................................................................................................................ 36
异步
IO
模型
................................................................................................................................ 36
JAVA IO
.................................................................................................................................. 36
JAVA NIO .................................................................................................................................... 37
NIO 的缓冲区 .....................................................................................................................................38
NIO 的非阻塞 .....................................................................................................................................38
Channel ....................................................................................................................................... 40
Buffer ............................................................................................................................................ 40
Selector ........................................................................................................................................ 40
2.8.2.1.
2.8.2.2.
2.8.3.
2.8.4.
2.8.5.
2.9.
JVM 类加载机制 ................................................................................................................................. 41
2.9.1.1. 加载 ..........................................................................................................................................................41
2.9.1.2. 验证 ..........................................................................................................................................................41
2.9.1.3. 准备 ..........................................................................................................................................................41
2.9.1.4. 解析 ..........................................................................................................................................................41
2.9.1.5.
2.9.1.6.
符号引用 ..............................................................................................................................................42
直接引用 ..............................................................................................................................................42
2.9.1.7. 初始化 ......................................................................................................................................................42
2.9.1.8.
2.9.2.
类构造器 <client>..............................................................................................................................42
类加载器
...................................................................................................................................... 42
启动类加载器 (Bootstrap ClassLoader) .........................................................................................43
扩展类加载器 (Extension ClassLoader)..........................................................................................43
应用程序类加载器 (Application ClassLoader) ..........................................................................43
双亲委派
...................................................................................................................................... 43
2.9.2.1.
2.9.2.2.
2.9.2.3.
2.9.3.
2.9.4. OSGI
动态模型系统
............................................................................................................ 44
2.9.4.1.
2.9.4.2.
动态改变构造 ......................................................................................................................................44
模块化编程与热插拔 ..........................................................................................................................44
3.
JAVA 集合 ............................................................................................................................................45
3.1.
3.2.
接口继承关系和实现 .......................................................................................................................... 45
L IST ....................................................................................................................................................... 47
3.2.1.
3.2.2.
3.2.3.
ArrayList
(数组)
....................................................................................................................... 47
Vector
(数组实现、线 程同步)
............................................................................................... 47
LinkList
(链ŝjava基础283讲20;)
......................................................................................................................... 47
3.3. SET ....................................................................................................................................................... 48
3.3.1.1. HashSet Hash 表) .............................................................................................................................48
3.3.1.2. TreeSet (二叉树) ................................................................................................................................49
3.3.1.3. LinkHashSet HashSet+LinkedHashMap ...................................................................................49
M AP ....................................................................................................................................................... 50
3.4.
3.4.1.
HashMap
(数组
+
链表
+
红黑树)
............................................................................................. 50
3.4.1.1. JAVA7 实现 .............................................................................................................................................50
3.4.1.2. JAVA8 实现 .............................................................................................................................................51
3.4.2.
ConcurrentHash Map .................................................................................................................. 51
3.4.2.1. Segment ..............................................................................................................................................51
3.4.2.2. 线程安全(Segment 继承 ReentrantLock 加锁) ..............................................................................51
3.4.2.3. 并行度(默认 16 .................................................................................................................................52
3.4.2.4. Java8 实现 (引入了红黑树) ..............................................................................................................52
13/01/2022
Page 3 of 283
3.4.3.
3.4.4.
3.4.5.
HashTable
(线程安全)
........................................................................................................... 53
TreeMap
(可排序)
.................................................................................................................. 53
LinkHashMap
(记录插入顺 序)
.............................................................................................. 53
4.
JAVA 多线程并发 .................................................................................................................................54
4.1.1.
4.1.2.
JAVA
并发知识库
....................................................................................................................... 54
JAVA
线程实现
/
创建方式
.......................................................................................................... 54
4.1.2.1. 继承 Thread ........................................................................................................................................54
4.1.2.2. 实现 Runnable 接口。............................................................................................................................54
4.1.2.3. ExecutorService Callable<Class> Future 有返回值线程.............................................................55
4.1.2.4. 基于线程池的方式...................................................................................................................................56
4.1.3.
4
种线程池
................................................................................................................................... 56
newCachedThreadPool .........................................................................................................................57
newFixedThreadPool .............................................................................................................................57
4.1.3.1.
4.1.3.2.
4.1.3.3. newScheduledThreadPool ....................................................................................................................58
4.1.3.4. newSingleThreadExecutor .................................................................................................................58
4.1.4.
线程生命周期
(
状态
) .................................................................................................................... 58
4.1.4.1. 新建状态(NE W .................................................................................................................................58
4.1.4.2. 就绪状态(RUNNABLE ): .................................................................................................................59
4.1.4.3. 运行状态(RUNNING ): ....................................................................................................................59
4.1.4.4. 阻塞状态(BLOCKED ):....................................................................................................................59
等待阻塞( o.wait->等待对列): ......................................................................................................................59
同步阻塞 (lock->锁池 ) ..........................................................................................................................................59
其他阻塞 (sleep/join) ............................................................................................................................................59
4.1.4.5. 线程死亡(DEAD ................................................................................................................................ 59
正常结束 ................................................................................................................................................................59
异常结束 ................................................................................................................................................................59
调用 stop...............................................................................................................................................................59
4.1.5.
终止线程
4
种方式
...................................................................................................................... 60
4.1.5.1. 正常运行结束...........................................................................................................................................60
4.1.5.2. 使用退出标志退出线程...........................................................................................................................60
4.1.5.3. Interrupt 方法结束线程...........................................................................................................................60
4.1.5.4. stop 方法终止线程(线程不安全).......................................................................................................61
4.1.6.
4.1.7.
4.1.8.
4.1.9.
sleep
wait
区别
....................................................................................................................... 61
start
run
区别
.......................................................................................................................... 62
JAVA
后台线程
........................................................................................................................... 62
JAVA
....................................................................................................................................... 63
4.1.9.1. 乐观锁 ......................................................................................................................................................63
4.1.9.2. 悲观锁 ......................................................................................................................................................63
4.1.9.3. 自旋锁 ......................................................................................................................................................63
自旋锁的优缺点 ....................................................................................................................................................63
自旋锁时间阈值( 1.6 引入了适应性自旋锁) ..................................................................................................63
自旋锁的开启 ........................................................................................................................................................64
4.1.9.4. Synchronized 同步锁..............................................................................................................................64
Synchronized 作用范围.......................................................................................................................................64
Synchronized 核心组件.......................................................................................................................................64
Synchronized 实现...............................................................................................................................................64
4.1.9.5. ReentrantLock .........................................................................................................................................66
Lock 接口的主要方法...........................................................................................................................................66
非公平锁 ................................................................................................................................................................66
公平锁 ....................................................................................................................................................................67
ReentrantLock synchronized ........................................................................................................................67
ReentrantLock 实现 .............................................................................................................................................67
Condition 类和 Object 类锁方法区别区别 .........................................................................................................68
tryLock lock lockInterruptibly 的区别........................................................................................................68
4.1.9.6. Semaphore 信号量 .................................................................................................................................68
实现互斥锁(计数器为 1 .................................................................................................................................68
代码实现 ................................................................................................................................................................68
Semaphore ReentrantLock ...........................................................................................................................69
4.1.9.7. AtomicInteger ..........................................................................................................................................69
13/01/2022
Page 4 of 283
4.1.9.8. 可重入锁(递归锁)...............................................................................................................................69
4.1.9.9. 公平锁与非公平锁...................................................................................................................................70
公平锁( Fair .....................................................................................................................................................70
非公平锁( Nonfair ...........................................................................................................................................70
4.1.9.10. ReadWriteLock 读写锁 ......................................................................................................................70
读锁........................................................................................................................................................................70
写锁 ........................................................................................................................................................................70
4.1.9.11. 共享锁和独占锁 ..................................................................................................................................70
独占锁....................................................................................................................................................................70
共享锁....................................................................................................................................................................70
4.1.9.12.
4.1.9.13.
重量级锁( Mutex Lock ................................................................................................................71
轻量级锁 ..............................................................................................................................................71
锁升级 ....................................................................................................................................................................71
4.1.9.14.
4.1.9.15.
4.1.9.16.
偏向锁 ..................................................................................................................................................71
分段锁 ..................................................................................................................................................71
锁优化 ..................................................................................................................................................71
减少锁持有时间....................................................................................................................................................72
减小锁粒度............................................................................................................................................................72
锁分离....................................................................................................................................................................72
锁粗化....................................................................................................................................................................72
锁消除 ....................................................................................................................................................................72
4.1.10.
线程基本方法
.............................................................................................................................. 72
4.1.10.1.
4.1.10.2.
4.1.10.3.
4.1.10.4.
4.1.10.5.
4.1.10.6.
4.1.10.7.
4.1.10.8.
线程等待( wait ............................................................................................................................... 73
线程睡眠( sleep .............................................................................................................................73
线程让步( yield ..............................................................................................................................73
线程中断( interrupt ........................................................................................................................73
Join 等待其他线程终止 ......................................................................................................................74
为什么要用 join()方法? ....................................................................................................................74
线程唤醒( notify .............................................................................................................................74
其他方法: ..........................................................................................................................................74
4.1.11.
线程上下文切换
.......................................................................................................................... 75
4.1.11.1.
4.1.11.2.
4.1.11.3.
4.1.11.4.
4.1.11.5.
4.1.11.6.
4.1.11.7.
进程 ......................................................................................................................................................75
上下文 ..................................................................................................................................................75
寄存器 ..................................................................................................................................................75
程序计数器 ..........................................................................................................................................75
PCB- “切换桢”.................................................................................................................................75
上下文切换的活动: ..........................................................................................................................76
引起线程上下文切换的原因 ..............................................................................................................76
4.1.12.
同步锁与死锁
.............................................................................................................................. 76
4.1.12.1.
4.1.12.2.
同步锁 ..................................................................................................................................................76
死锁 ......................................................................................................................................................76
4.1.13.
线程池原理
.................................................................................................................................. 76
4.1.13.1. 线程复用..............................................................................................................................................76
4.1.13.2. 线程池的组成......................................................................................................................................76
4.1.13.3. 拒绝策略..............................................................................................................................................78
4.1.13.4.
Java 线程池工作过程 .........................................................................................................................78
4.1.14. JAVA
阻塞队列原理
.................................................................................................................... 79
4.1.14.1. 阻塞队列的主要方法 ..........................................................................................................................80
插入操作:............................................................................................................................................................80
获取数据操作:....................................................................................................................................................81
4.1.14.2. Java 中的阻塞队列 .............................................................................................................................81
4.1.14.3. ArrayBlockingQueue(公平、非公平) .......................................................................................82
4.1.14.4. LinkedBlockingQueue(两个独立锁提高并发) .........................................................................82
4.1.14.5. PriorityBlockingQueuecompareTo 排序实现优先)..............................................................82
4.1.14.6. DelayQueue(缓存失效、定时任务 ..........................................................................................82
4.1.14.7. SynchronousQueue(不存储数据、可用于传递数据)..............................................................83
4.1.14.8. LinkedTransferQueue......................................................................................................................83
13/01/2022
Page 5 of 283
4.1.14.9. LinkedBlockingDeque .....................................................................................................................83
4.1.15. CyclicBarri er
CountDownLatch
Semaphore
的用法
........................................................ 84
4.1.15.1. CountDownLatch(线程计数器 ................................................................................................84
4.1.15.2. CyclicBarrier(回环栅栏-等待至 barrier 状态再全部同时执行) ...............................................84
4.1.15.3. Semaphore (信号量- 控制同时访问的线程个数) .......................................................................85
4.1.16. volatile
关键字的作用( 变量可见性 、禁止重排序
............................................................. 87
变量可见性 ............................................................................................................................................................87
禁止重排序 ............................................................................................................................................................87
sychronized 更轻量级的同 步锁 .....................................................................................................................87
适用场景 ................................................................................................................................................................87
4.1.17.
如何在两个线程之间共 享数据
................................................................................................... 88
将数据抽象成一个类,并将数据的操作作为这个类的方法 .............................................................................88
Runnable 对象作为一个类的内部类 ..................................................................................................................89
4.1.18. ThreadLoca l
作用( 线程本地存储
........................................................................................ 90
ThreadLocalMap (线程的一个属性) ..............................................................................................................90
使用场景 ................................................................................................................................................................91
4.1.19. synchroni zed
Reentrant Lock
的区别
.................................................................................. 91
4.1.19.1. 两者的共同点: ..................................................................................................................................91
4.1.19.2. 两者的不同点: ..................................................................................................................................92
4.1.20. ConcurrentH ashMap
并发
......................................................................................................... 92
4.1.20.1. 减小锁粒度..........................................................................................................................................92
4.1.20.2. ConcurrentHashMap 分段锁..........................................................................................................92
ConcurrentHashMap 是由 Segment 数组结构和 HashEntry 数组结构组成.................................................93
4.1.21. Java
中用到的线程调度
............................................................................................................. 93
4.1.21.1. 抢占式调度:......................................................................................................................................93
4.1.21.2. 协同式调度:......................................................................................................................................93
4.1.21.3. JVM 的线程调度实现(抢占式调度) .............................................................................................94
4.1.21.4. 线程让出 cpu 的情况: .....................................................................................................................94
4.1.22.
进程调度算法
.............................................................................................................................. 94
4.1.22.1. 优先调度算法......................................................................................................................................94
4.1.22.2. 高优先权优先调度算法 ......................................................................................................................95
4.1.22.3. 基于时间片的轮转调度算法 ..............................................................................................................96
4.1.23.
什么是
CAS
比较并交换-乐观锁机制-锁自
.................................................................. 96
4.1.23.1. 概念及特性..........................................................................................................................................96
4.1.23.2. 原子包 java.util.concurrent.atomic(锁自旋) ...........................................................................97
4.1.23.3. ABA 问题.............................................................................................................................................98
4.1.24.
什么是
AQS
抽象的队列同步器
......................................................................................... 98
Exclusive 独占资源-Ree ntrantLock ...................................................................................................................99
Share 共享资源-Semaphore/C ountDownLatch ...............................................................................................99
同步器的实现是 ABS 核心( state 资源状态计数) .......................................................................................100
ReentrantReadWriteLock 实现独占和共享两种方式.....................................................................................100
5.
JAVA 基础 ..........................................................................................................................................101
5.1.1. JAVA
异常分类及处理
.............................................................................................................. 101
5.1.1.1. 概念....................................................................................................................................................101
5.1.1.2. 异常分类............................................................................................................................................101
Error .....................................................................................................................................................................101
ExceptionRuntimeExceptionCheckedException ...........................................................................101
5.1.1.3. 异常的处理方式 ................................................................................................................................102
遇到问题不进行具体处理,而是继续抛给调用者 throw,throws......................................................... 102
try catch 捕获异常针对性处理方式 ..................................................................................................................102
5.1.1.4. Throw throws 的区别: ............................................................................................................102
小讯
上一篇 2024-12-24 12:37
下一篇 2025-01-02 15:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/5976.html