摘要:
目录JVM 内存结构运行时数据区程序计数器Java 虚拟机栈栈的作用栈的特点栈帧栈运行原理栈帧的结构局部变量表操作数栈动态链接方法返回地址本地方法栈(Native Method Stack)堆内存JIT逃逸分析字符串常量池本地内存直接内存元空间运行时常量池 内存是非常重要的系统资源,是硬盘和 CPU 阅读全文
摘要:
目录类加载过程LoadingVerificationPreparationResolutionInitialization类加载器双亲委派模型 类加载过程 Java 的类加载过程可以分为 5 个阶段:载入、验证、准备、解析和初始化。 这 5 个阶段一般是顺序发生的,但在动态绑定的情况下,解析阶段发生 阅读全文
摘要:
目录Condition可中断锁和不可中断锁有什么区别?原理源码分析awaitaddConditionWaiterunlinkCancelledWaiterssignaltransferForSignal总结await 与 signalLock 和 Condition 的应用附录链表中头节点的作用不带 阅读全文
摘要:
目录ThreadLocalThreadLocal 实现线程隔离的原理ThreadLocal 内存泄漏场景 ThreadLocal ThreadLocal是一个将在多线程中为每一个线程创建单独的变量副本的类; 当使用ThreadLocal来维护变量时, ThreadLocal会为每个线程创建单独的变量 阅读全文
摘要:
目录ReentrantLockReentrantLock 特性概览源码分析抽象同步器:Sync非公平同步器:NonfairSync公平同步器:FairSync小结 ReentrantLock ReentrantLock 是一个可重入的互斥锁,又被称为“独占锁”。 ReentrantLock 类实现了 阅读全文
摘要:
synchronized 关键字 synchronized 是 Java 中的一个关键字,翻译成中文是同步的意思,主要解决的是多个线程之间访问资源的同步性,可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。 使用方法 修饰实例方法 给当前对象实例加锁,进入同步代码前要获得 当前对象实例的 阅读全文
摘要:
目录简介方法介绍阻塞和唤醒示例示例1示例2示例3阻塞对象 blocker 的作用和显式锁、隐式锁等待唤醒的区别 简介 java.util.concurrent.locks.LockSupport 是一个工具类,提供了基本的线程阻塞和唤醒功能,它是创建锁和其他同步组件的基础工具,内部是基于 sun.m 阅读全文