没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/release/download_crawler_static/88461577/bg1.jpg)
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
![](https://csdnimg.cn/release/download_crawler_static/88461577/bg2.jpg)
13/04/2018
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
![](https://csdnimg.cn/release/download_crawler_static/88461577/bg3.jpg)
13/04/2018
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
![](https://csdnimg.cn/release/download_crawler_static/88461577/bg4.jpg)
13/04/2018
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
![](https://csdnimg.cn/release/download_crawler_static/88461577/bg5.jpg)
13/04/2018
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页未读,继续阅读
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/981df9f6f4c14bd29866ba27520afb8e_luxd1994.jpg!1)
阿东程序员
- 粉丝: 1
- 资源: 18
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)