@@ -131,17 +131,19 @@ Java的SPI:SPI 的本质是将接口实现类的全限定名配置在文件中
131131## 对象的创建过程
1321321 . 类加载检查
1331332 . 分配内存:指针碰撞或空闲列表
134- - 当多个对象并发争抢空间时,有两种解决办法:CAS 和本地线程分配缓冲(TLAB,默认方式)
134+ - 当多个对象并发争抢空间时,有两种解决办法:CAS 和本地线程分配缓冲(TLAB,默认方式)
1351353 . 初始化零值
1361364 . 设置对象头
1371375 . 执行构造方法
138138
139139## 对象的内存布局
140+
1401411 . 对象头,两部分组成:存储自身运行时数据如哈希码,GC分代年龄;指向类的类型指针
1411422 . 实例数据,真正存储有效信息的部分
1421433 . 对齐填充,起占位作用
143144
144- [ 对象的定位访问(针对JVM虚拟机栈中的局部变量表)] ( https://javaguide.cn/java/jvm/memory-area.html#%E5%AF%B9%E8%B1%A1%E7%9A%84%E8%AE%BF%E9%97%AE%E5%AE%9A%E4%BD%8D ) :
145+ ## [ 对象的定位访问(针对JVM虚拟机栈中的局部变量表)] ( https://javaguide.cn/java/jvm/memory-area.html#%E5%AF%B9%E8%B1%A1%E7%9A%84%E8%AE%BF%E9%97%AE%E5%AE%9A%E4%BD%8D )
146+
1451471 . 句柄,Java 堆中将会划分出一块内存来作为句柄池,局部变量表 reference 中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与对象类型数据各自的具体地址信息。
1461482 . 直接指针,局部变量表里 reference 中存储的直接就是对象的地址。
147149
@@ -463,11 +465,12 @@ ThreadLocal: 提供线程内的局部变量,在多线程的环境中保证各
463465线程工厂用于创建新线程。线程工厂提供了创建线程的方法,可以自定义线程的名称、优先级等属性。
464466
4654677 . 拒绝策略(rejectedExecutionHandler):
466- 拒绝策略定义了当线程池无法接受新任务时的处理策略。当工作队列已满且线程池中的线程数已达到最大线程数时,新任务将被拒绝执行。常见的拒绝策略有丢弃、丢弃最旧的任务、抛出异常等。
467- 1 . AbortPolicy 拒绝任务并抛出一个异常 RejectedExecutionException
468- 2 . DiscardPolicy 拒绝任务,不抛出异常。
469- 3 . DiscardOldestPolicy 把老的任务丢掉,执行新任务。
470- 4 . CallerRunsPolicy 直接调用线程处理该任务。
468+ 拒绝策略定义了当线程池无法接受新任务时的处理策略。当工作队列已满且线程池中的线程数已达到最大线程数时,新任务将被拒绝执行。常见的拒绝策略有丢弃、丢弃最旧的任务、抛出异常等。
469+ 1 . AbortPolicy 拒绝任务并抛出一个异常 RejectedExecutionException
470+ 2 . DiscardPolicy 拒绝任务,不抛出异常。
471+ 3 . DiscardOldestPolicy 把老的任务丢掉,执行新任务。
472+ 4 . CallerRunsPolicy 直接调用线程处理该任务。
473+
471474
472475
473476
@@ -521,7 +524,7 @@ JDK四种线程池:
521524- 非公平锁,每个线程获取锁的顺序是随机的,并不会遵循先来先得的规则,所有线程会竞争获取锁。
522525
5235265 . 可重入锁(递归锁),非可重入锁:ReentrantLock和synchronized都是可重入锁,** NonReentrantLock是非可重入锁**
524- - 可重入锁,指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁 (前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。好处是一定程度避免死锁 。
527+ - 可重入锁,指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法可以再次获取锁 (前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。好处是避免死锁 。
525528- 非可重入锁,如果一个方法中获取锁并调用另外方法,那么在调用另外方法前需要释放锁。
526529
5275306 . 独享锁(排它锁),共享锁
0 commit comments