摘要: 前言 近期整理笔记想开个专题,准备从并发入手。并发这块又从哪里入手,一开始想的是AQS,偶然间看到自己之前编译调试openjdk的时候整理的一些笔记,又有了新的想法,决定先从最基础的开始,并发这块脱离不了线程,那么我们就结合jdk,hotspot探究一下线程的来龙去脉。 线程的定义:程序运行的最小单 阅读全文
posted @ 2019-07-30 20:27 代码改变人类 阅读(819) 评论(0) 推荐(1) 编辑
摘要: [TOC] 类加载器主要流程: 加载 连接(校验,准备,解析) 初始化 使用 卸载 类的使用方式: ​ 主动使用 ​ 被动使用 所有的java 虚拟机实现必须是在Java程序首次主动使用类、接口的时候才初始化它们; 换句话说被动使用就不会初始化 首次初始化:也就是只会初始化一次; 什么情况是主动使用 阅读全文
posted @ 2019-09-10 09:27 代码改变人类 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 在并发场景中我们经常会看到volatile的身影,它到底能解决哪些问题 ? [TOC] volatile关键字的语义: 一旦一个共享变量被其修饰之后: 可见性:一个线程对这个变量的修改对其他线程可见,会立马得到最新值 有序性:被volatile修饰的变量会加入内存屏障 首先我们先验证可见性: 执行如 阅读全文
posted @ 2019-08-29 14:24 代码改变人类 阅读(225) 评论(0) 推荐(0) 编辑
摘要: wait/notify实现生产者消费者 线程的协作机制wait/notify,线程除了有竞争关系,他们还存在着协作,下面我们就用实际案例来描述下他们的协作关系 生产者/消费者模型的特性 1. ​ 消费者、生产者是通过一个缓冲区进行通信的,这个缓冲区可以是阻塞队列; 2. ​ 生产者在队列满的时候停止 阅读全文
posted @ 2019-08-06 09:21 代码改变人类 阅读(175) 评论(0) 推荐(0) 编辑