摘要: 预备知识 Java对象(非数组):用来存储锁,由对象头、实例数据、对齐填充数据组成。 对象头:由MarkWord、类型指针组成。32位JVM下的Markword占32位,存储的数据取决于锁的状态。 初始是无锁状态。 在运行期间MarkWord里存储的数据会随着锁状态的变化而变化 Monitor 类型 阅读全文
posted @ 2018-07-10 19:21 jinshuai86 阅读(3537) 评论(0) 推荐(0) 编辑
摘要: 介绍 ThreadLocal是一个用于创建线程 局部变量 的类。当前线程通过ThreadLocal的set()方法设置的变量 只对当前线程可见 ,通过get()获取设置的变量。 使用 支持泛型 当前线程通过ThreadLocal对象的set(value)/get()设置变量和获取设置的变量 原理 每 阅读全文
posted @ 2018-07-05 21:51 jinshuai86 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 预备知识 反射:可以在 运行 期间分析某个类,每个类在JVM方法区都有一个Class对象,用来描述这个类的信息,比如这个类有什么属性,什么方法,修饰符等,通过Class对象可以创建对应类的实例,比如通过newInstance(); 代理 为某个对象提供一个代理,以控制对这个对象的访问,好比明星的经纪 阅读全文
posted @ 2018-06-26 12:16 jinshuai86 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 预备知识 可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。 重排序:如果在单线程下对于指令的重排不会影响逻辑,那么在可以提高运行效率的前提下会进行适当的指令重排。 缓存行:CPU中的缓存是分段的,一段对应一个存储空间,称为缓存行,缓存行是CPU缓存中可分配的最小存储单元。 CP 阅读全文
posted @ 2018-06-25 20:32 jinshuai86 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 预备知识 interrupt() Thread的非静态方法,标记当前线程的中断状态为true; isInterrupted() Thread的非静态方法,查看当前线程的中断状态; interrupted() Thread的静态方法,查看当前线程的中断状态,并清除(将状态改为false); 如果当前线 阅读全文
posted @ 2018-06-22 15:55 jinshuai86 阅读(188) 评论(0) 推荐(0) 编辑
摘要: JDBC是一些类和接口(在java.sql 和javax.sql中)目的是用于连接数据库,好处是方便与不同数据库打交道。 SUN 定义了JDBC 中接口规范,不同的数据库厂商针对各自的数据库软件实现了这些接口 (Connection,Driver等)。 Driver接口 每一个驱动程序(由数据库厂商 阅读全文
posted @ 2017-07-30 15:59 jinshuai86 阅读(114) 评论(0) 推荐(0) 编辑