摘要:
线程池的几个问题 阅读全文
摘要:
关于concurrentHashMap 的几个问题,基于jdk 1.8 的几个问题。 1:concurrentHashMap的数据结构是怎样的? 和HashMap 一样,concurrentHashMap的数据结构是 数组+链表,可以从它的成员变量中可以看出这样的数据结构 transient vol 阅读全文
摘要:
本篇博文主要讲述的是JVM内存区域划分,各区域存储的内容,以及类文件结构相关的内容。 1:运行时数据区包含的几个部分:几个区域划分结构图如下: 下面介绍下各个区域存储的内容: 1:程序计数器 JVM中的程序计数器的功能跟汇编语言中的程序计数器的功能在逻辑上是等同的,也就是说是用来指示 执行哪条指令的 阅读全文
摘要:
模板设计模式主要是用在代码重构中的减少重复代码的场景:将相同的代码抽象在父类中,具体实现则通过子类中具体的实现逻辑。 父类的方法通过定义一个空的方法,具体的逻辑让子类来实现,这样实现了父类控制子类。在很多场景中这样的方式很有效的,在spring框架中就用了很多模板方式的实现。 核心代码: 1:抽象父 阅读全文
摘要:
适配器模式的功能是将一个接口转换成用户希望的另一个接口,使接口不兼容的类可以一起工作,目的是包装一个类使其可以达到目标的要求。 在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。 适配器模式中的几个核心的角色: Target(目标抽象类):目标 阅读全文
摘要:
策略模式系列 阅读全文
摘要:
单例模式,就是只有一个实例,并且自己负责创建自己的对象,对外暴露获取对象的方法,不允许外部实例化该类。 核心代码:构造方法私有化,private,持有自己类型的属性,对外提供获取实例的静态方法 1:懒汉模式: 代码如下: 1 public class Singleton { 2 private st 阅读全文
摘要:
在分析线程池的源码之前,有必要对线程池的几种状态整理一下; 1:首先看看几种状态的定义: //ctl记录了"线程池中的任务数量"和"线程池状态"2个信息 //ctl共包括32位。其中,高3位表示"线程池状态",低29位表示"线程池中的任务数量" private final AtomicInteger 阅读全文
摘要:
1):线程池中几个成员变量的说明。 ctl:记录了"线程池中的任务数量"和"线程池状态"2个信息,包括32位。其中,高3位表示"线程池状态",低29位表示"线程池中的任务数量"。 在 ThreadPoolExecutor 类中的定义如下: private final AtomicInteger ct 阅读全文