![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程
掌灯夜行
这个作者很懒,什么都没留下…
展开
-
JVM-理解java对象的堆内存结构
java对象在堆中的基本内存结构,分为三个部分:1.对象头(header):包括Mark Word(标记字段)和Class Pointer(类型指针)2.实例数据(instance data):对象真正存储的有效信息,即代码中定义的各种类型的字段内容3.对齐填充(padding):由HotSpot虚拟机定义对象起始地址必须是8字节整数倍,当不是整数倍时,需要填充数据补齐,因为对补齐的数据访问...转载 2019-01-02 17:31:18 · 906 阅读 · 0 评论 -
JVM -Monitor简介
什么是Monitor?1.Monitor是一种用来实现同步的工具2.与每个java对象相关联,即每个java对象都有一个Monitor与之对应3.Monitor是实现Sychronized(内置锁)的基础Monitor的基本结构是什么?1.Owner字段:初始时为NULL表示当前没有任何线程拥有该monitor record,当线程成功拥有该锁后保存线程唯一标识,当锁被释放时又设置为N...转载 2019-01-02 17:33:36 · 4254 阅读 · 0 评论 -
JVM - synchronized 关键字原理
众所周知 synchronized 关键字是解决并发问题常用解决方案,有以下三种使用方式:同步普通方法,锁的是当前对象。 同步静态方法,锁的是当前 Class 对象。 同步块,锁的是 () 中的对象。实现原理: JVM 是通过进入、退出对象监视器( Monitor )来实现对方法、同步块的同步的。具体实现是在编译之后在同步方法调用前加入一个 monitor.enter 指令,在退出方...原创 2019-01-02 17:41:42 · 377 阅读 · 0 评论 -
JVM - 线程池
前言平时接触过多线程开发的童鞋应该都或多或少了解过线程池,之前发布的《阿里巴巴 Java 手册》里也有一条:可见线程池的重要性。简单来说使用线程池有以下几个目的:线程是稀缺资源,不能频繁的创建。 解耦作用;线程的创建于执行完全分开,方便维护。 应当将其放入一个池子中,可以给其他任务进行复用。线程池原理谈到线程池就会想到池化技术,其中最核心的思想就是把宝贵的资源放到一个...转载 2019-01-02 17:51:05 · 986 阅读 · 0 评论