运行时数据区 在 JDK8 中方法区改为“元空间”,使用本地内存 程序计数器(线程私有) 每个线程都有一个独立的程序计数器,属于线程私有 作用是保存当前线程执行的字节码指令的地址或行号 虚拟机栈(线程…
类加载过程 类被加载入 JVM 后,整个生命周期分为七个阶段:加载、验证、准备、解析、初始化、使用和卸载(验证、准备、解析这三个阶段统称为连接) 除去使用和卸载,剩余 5 个阶段顺序发生,就是 Jav…
JVM 组成 类加载器 类加载器负责将字节码文件加载到内存中,主要会经历加载->连接->实例化这三个阶段 运行时数据区 定义了 Java 程序运行期间需要使用到的内存区域,简单来说,这块内…
ThreadLocal 概念 ThreadLocal 是给每个线程配一个专属的变量副本,实现线程间的数据隔离,避免并发冲突 set方法,设置当前线程中 ThreadLocal 的变量值 get 方法,…
ConcurrentHashMap 变化 JDK 1.7 1)包含一个 Segment 数组,一个 Segment 段包含一个 HashEntry 数组,每一个HashEntry节点相当于一个链表 2…
抽象队列同步器 AQS 概念 1)AQS是AbstractQueuedSynchronizer的简称,即抽象队列同步器 抽象:抽象类,只实现一些主要逻辑,有些方法由子类实现 队列:使用先进先出(FIF…
锁的存放位置 所有的锁都是基于对象的 每个 Java 对象都有一个对象头。如果是非数组类型,则用 2 个字宽来存储对象头,如果是数组,则会用 3 个字宽来存储对象头 对象头: 长度 内容 说明 一字宽…
JMM 概念 JMM 是一套规范,定义多线程环境下,Java 程序中的变量(特别是共享变量)如何被写入内存以及如何从内存中读取的规则,旨在解决由于多线程访问共享数据而可能引发的各种问题 注意:JMM …
SpringBoot整合LangChain4j 引入依赖 <!--langchain4j起步依赖--> <dependency> <groupId>dev.lang…
使用多线程 创建线程三种方式 优先选择使用 Runnable 接口;当需要返回值时,使用 Callable 接口;仅在测试或简单实现时才选择继承 Thread 类 方式一:继承 Thread 类 通过…