This commit is contained in:
Dragon
2021-04-03 15:35:33 +08:00
parent bf0d1bcccd
commit 3c12ef4585
4 changed files with 695 additions and 3 deletions

View File

@@ -363,7 +363,7 @@ Java代码的行号和字节码指令行号的对应关系
1. 参数值的存放总是从局部变量数组索引 0 的位置开始,到数组长度-1的索引结束。
2. 局部变量表,**最基本的存储单元是Slot变量槽**局部变量表中存放编译期可知的各种基本数据类型8种引用类型referencereturnAddress类型的变量。
3. 在局部变量表里,**32位以内的类型只占用一个slot**包括returnAddress类型**64位的类型占用两个slot**1ong和double
- byte、short、char在储存前转换为intboolean也被转换为int0表示false非0表示true
- byte、short、char在储存前转换为intboolean也被转换为int0表示false非0表示true
- long和double则占据两个slot
4. JVM会为局部变量表中的每一个Slot都分配一个访问索引通过这个索引即可成功访问到局部变量表中指定的局部变量值
5. 当一个实例方法被调用的时候,它的方法参数和方法体内部定义的局部变量将会**按照顺序被复制**到局部变量表中的每一个slot上

View File

@@ -30,7 +30,7 @@ date: 2020-10-06 22:09:58
### 可见性概念
可见性Visibility是指一个线程对共享变量进行修改另一个立即得到修改后的新值。
可见性Visibility是指一个线程对共享变量进行修改另一个线程立即得到修改后的新值。
### 可见性演示
@@ -38,7 +38,7 @@ date: 2020-10-06 22:09:58
/* 笔记
* 1.当没有加Volatile的时候,while循环会一直在里面循环转圈
* 2.当加了之后Volatile,由于可见性,一旦num改了之后,就会通知其他线程
* 3.还有注意的时候不能用if,if不会重新拉回来再判断一次。(也叫做虚假唤醒)
* 3.还有注意不能用if,if不会重新拉回来再判断一次。(也叫做虚假唤醒)
* 4.案例演示:一个线程对共享变量的修改,另一个线程不能立即得到新值
* */
public class Video04_01 {