没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
283页
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、servicorFrom 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
资源推荐
资源详情
资源评论
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、servicorFrom ..................................................................................................................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/01/2022
Page 2 of 283
2.7.6.2. 并发标记 ................................................................................................................................................34
2.7.6.3. 重新标记 ................................................................................................................................................34
2.7.6.4. 并发清除 ................................................................................................................................................34
2.7.7.
G1
收集器
...............................................................................................................................34
2.8.
JAVA IO/NIO...........................................................................................................................34
2.8.1.
阻塞
IO
模型
...........................................................................................................................34
2.8.2.
非阻塞
IO
模型
.......................................................................................................................35
2.8.3.
多路复用
IO
模型
...................................................................................................................35
2.8.4.
信号驱动
IO
模型
...................................................................................................................36
2.8.5.
异步
IO
模型
...........................................................................................................................36
2.8.1.
JAVA IO
包
.............................................................................................................................36
2.8.2.
JAVA NIO ........................................................................................................................37
2.8.2.1. NIO 的缓冲区........................................................................................................................................38
2.8.2.2. NIO 的非阻塞........................................................................................................................................38
2.8.3.
Channel ...........................................................................................................................40
2.8.4.
Buffer ...............................................................................................................................40
2.8.5.
Selector ...........................................................................................................................40
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. 符号引用 ................................................................................................................................................42
2.9.1.6. 直接引用 ................................................................................................................................................42
2.9.1.7. 初始化.........................................................................................................................................................42
2.9.1.8. 类构造器<client>.....................................................................................................................................42
2.9.2.
类加载器
.................................................................................................................................42
2.9.2.1. 启动类加载器(Bootstrap ClassLoader) ..............................................................................................43
2.9.2.2. 扩展类加载器(Extension ClassLoader)...............................................................................................43
2.9.2.3. 应用程序类加载器(Application ClassLoader):............................................................................43
2.9.3.
双亲委派
.................................................................................................................................43
2.9.4.
OSGI
(动态模型系统)
.......................................................................................................44
2.9.4.1. 动态改变构造 ........................................................................................................................................44
2.9.4.2. 模块化编程与热插拔 ............................................................................................................................44
3.
JAVA 集合 ....................................................................................................................................................45
3.1.
接口继承关系和实现............................................................................................................................45
3.2.
LIST............................................................................................................................................................................47
3.2.1.
ArrayList
(数组)
..................................................................................................................47
3.2.2.
Vector
(数组实现、线程同步)
..........................................................................................47
3.2.3.
LinkList
(链表)
....................................................................................................................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
3.4.
MAP ...........................................................................................................................................................................50
3.4.1.
HashMap
(数组
+
链表
+
红黑树)
........................................................................................50
3.4.1.1.
JAVA7 实现................................................................................................................................................50
3.4.1.2.
JAVA8 实现................................................................................................................................................51
3.4.2.
ConcurrentHashMap .......................................................................................................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.
HashTable
(线程安全)
......................................................................................................53
3.4.4.
TreeMap
(可排序)
.............................................................................................................53
3.4.5.
LinkHashMap
(记录插入顺序)
.........................................................................................53
4.
JAVA 多线程并发 ........................................................................................................................................54
4.1.1.
JAVA
并发知识库
..................................................................................................................54
4.1.2.
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
4.1.3.1. newCachedThreadPool...............................................................................................................57
4.1.3.2. newFixedThreadPool ..................................................................................................................57
4.1.3.3. newScheduledThreadPool ..........................................................................................................58
4.1.3.4. newSingleThreadExecutor........................................................................................................................58
4.1.4.
线程生命周期
(
状态
) ........................................................................................................58
4.1.4.1. 新建状态(NEW) ...................................................................................................................................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.
sleep
与
wait
区别
..................................................................................................................61
4.1.7.
start
与
run
区别
.....................................................................................................................62
4.1.8.
JAVA
后台线程
......................................................................................................................62
4.1.9.
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. 重量级锁(Mutex Lock) ..................................................................................................................71
4.1.9.13. 轻量级锁 ................................................................................................................................................71
锁升级 ......................................................................................................................................................................71
4.1.9.14. 偏向锁 ....................................................................................................................................................71
4.1.9.15. 分段锁 ....................................................................................................................................................71
4.1.9.16. 锁优化 ....................................................................................................................................................71
减少锁持有时间 ......................................................................................................................................................72
减小锁粒度 ..............................................................................................................................................................72
锁分离 ......................................................................................................................................................................72
锁粗化 ......................................................................................................................................................................72
锁消除 ......................................................................................................................................................................72
4.1.10.
线程基本方法
.........................................................................................................................72
4.1.10.1. 线程等待(wait) .................................................................................................................................73
4.1.10.2. 线程睡眠(sleep)...............................................................................................................................73
4.1.10.3. 线程让步(yield) ................................................................................................................................73
4.1.10.4. 线程中断(interrupt)..........................................................................................................................73
4.1.10.5. Join 等待其他线程终止 ........................................................................................................................74
4.1.10.6. 为什么要用 join()方法? ......................................................................................................................74
4.1.10.7. 线程唤醒(notify)...............................................................................................................................74
4.1.10.8. 其他方法: ............................................................................................................................................74
4.1.11.
线程上下文切换
.....................................................................................................................75
4.1.11.1. 进程 ........................................................................................................................................................75
4.1.11.2.
上下文 ....................................................................................................................................................75
4.1.11.3.
寄存器 ....................................................................................................................................................75
4.1.11.4.
程序计数器 ............................................................................................................................................75
4.1.11.5.
PCB-“切换桢”...................................................................................................................................75
4.1.11.6.
上下文切换的活动: ............................................................................................................................76
4.1.11.7.
引起线程上下文切换的原因 ................................................................................................................76
4.1.12.
同步锁与死锁
.........................................................................................................................76
4.1.12.1. 同步锁 ....................................................................................................................................................76
4.1.12.2. 死锁 ........................................................................................................................................................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. PriorityBlockingQueue(compareTo 排序实现优先)...............................................................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.
CyclicBarrier
、
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.
ThreadLocal
作用(线程本地存储)
...................................................................................90
ThreadLocalMap(线程的一个属性) ................................................................................................................90
使用场景 ..................................................................................................................................................................91
4.1.19.
synchronized
和
ReentrantLock
的区别
......................................................................................91
4.1.19.1. 两者的共同点: ....................................................................................................................................91
4.1.19.2. 两者的不同点: ....................................................................................................................................92
4.1.20.
ConcurrentHashMap
并发
.....................................................................................................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 独占资源-ReentrantLock .........................................................................................................99
Share 共享资源-Semaphore/CountDownLatch .......................................................................................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
Exception(RuntimeException、CheckedException).............................................................................101
5.1.1.3. 异常的处理方式 ..................................................................................................................................102
遇到问题不进行具体处理,而是继续抛给调用者 (throw,throws)..........................................................102
try catch 捕获异常针对性处理方式....................................................................................................................102
5.1.1.4. Throw 和 throws 的区别: ..............................................................................................................102
剩余282页未读,继续阅读
资源评论
计码源泉
- 粉丝: 2
- 资源: 74
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功