摘要: Class装载验证流程: l 验证:保证class流的格式正确 l 准备:为类的静态变量分配内存,并设置默认的初始值(方法区中) l 解析:符号引用转化为直接引用 ClassLoader: l ClassLoader负责类装载过程中的加载阶段 l ClassLoader的实例将读入Java字节码将类 阅读全文
posted @ 2017-01-08 10:49 lys0410 阅读(105) 评论(0) 推荐(0) 编辑
摘要: JVM内存模型总体架构图 程序计数器多线程时,当线程数超过CPU数量或CPU内核数量,线程之间就要根据时间片轮询抢夺CPU时间资源。因此每个线程有要有一个独立的程序计数器,记录下一条要运行的指令。线程私有的内存区域。如果执行的是JAVA方法,计数器记录正在执行的java字节码地址,如果执行的是nat 阅读全文
posted @ 2017-01-08 10:44 lys0410 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 一、线程安全问题 当多个线程访问某一个类的时候,这个类都能表现出正确的行为,那么这个类就是线程安全的。 synchronized可以加在任意对象及方法上加锁,加锁的这段代码就成为互斥区或者临界区 下面是关于线程安全的一个小示例,关键点就在synchronized这个词上 二、多个线程多把锁 多个线程 阅读全文
posted @ 2017-01-08 10:39 lys0410 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 在我们设计程序的时候要考虑问题的整体,不然很容易出现脏读,看示例 在getValue方法前加synchronized关键字可以避免脏读。否则打印出来的结果是下图那样的: 实际我们先要的结果应该是这样的: 二、数据库的ACID 这里先关注一下ORACLE的一致性读的特性:举个例子,有A和B两个人,A在 阅读全文
posted @ 2017-01-08 10:38 lys0410 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 一、synchronized有锁重入的特点,某个线程得到对象的锁后,再次请求此对象可以再次得到改对象的锁。如下示例,在method1中调用method2,在method2中调用method3,而method1、method2和method3都是加了synchronized关键字的。 二、父类和子类的 阅读全文
posted @ 2017-01-08 10:35 lys0410 阅读(146) 评论(0) 推荐(0) 编辑