摘要: 一、用户态和内核态 内核态:能访问所有指令 用户态:只能访问用户允许访问的指令,JVM工作在用户态 synchronized重量级锁:JVM要向某个资源加锁,要通过用户态向内核态申请资源 二、对象的内存布局 8字节的markword,记录了锁信息,gc信息,hashcode 4字节的类型指针,通过指 阅读全文
posted @ 2022-03-07 21:58 showMeTheCodes 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 并发编程三大特性:可见性、有序性、原子性 一、可见性 java内存模型规定:所有变量都存在主内存中,每个线程有自己的工作内存。线程对变量的修改必须在自己的工作内存中修改,不能在主内存中修改 1、volatile保证可见性 public class MyVolatile { private stati 阅读全文
posted @ 2022-03-07 17:54 showMeTheCodes 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 一、请解释一下对象的创建过程 public class T { int m = 8; } T t = new T(); 1、给m申请内存,将m进行半初始化,初始化0 2、调用构造方法,给m赋值8 3、将t对象的引用指向m 二、DCL与volatile问题 1、volatile:保证线程可见性,防止指 阅读全文
posted @ 2022-03-07 11:24 showMeTheCodes 阅读(288) 评论(0) 推荐(0) 编辑