并发编程中锁的作用:让多线程同步执行
多线程同步内部如何实现:wait/notify,synchrozied,ReentranLock(1.6后)
一、Synchroized同步锁,锁的是什么?
锁的是对象头,并非代码块
二、Java对象由哪几部分组成?
Java对象最多由三部分组成。
对象头(必有)
Java对象的实例数据(可有)
填充数据(可有)
例1(有填充数据的情况)
public class L{
boolean flag = flase;
}
例2(无填充数据的情况)
public class L{
int a = 2;
}
三、对象头由哪几部分组成?
对象头有96bit,两部分组成
1、Mark Word(64bit)
存储对象的hashCode、锁信息、分代年龄,GC标志
2、Class pointer/Class Metadata Address(32bit或64bit)
类型指针指向对象的类元信息,JVM通过这个指针确定该对象是哪个类的实例
四、使用Synchroized关键字时,对象有几种状态?
有五种状态。
1、无状态 new出来的时候
2、偏向锁
3、轻量锁
4、重量锁
5、gc标记