volatile英[ˈvɒlətaɪl]美[ˈvɑːlətl] . 先學會讀。單詞原意是不穩定的java
爲何volatile保證可見性卻不保證原子性?
i++;分解 ① int temp=i; ② i=i+1; ③ return i; 併發到③賦值操做的時候,即便是可見的也已經晚了
另外看個小甜點 todo 未進行javap 分析數組
代碼
int a = 0; System.out.println(a++); System.out.println(a); 下面是編譯結果 int a = 0; byte var10001 = a; int a = a + 1; System.out.println(var10001); System.out.println(a);
代碼
int a = 0; a = a++; System.out.println(a); 下面是編譯代碼 int a = 0; byte var10000 = a; int var2 = a + 1; a = var10000; System.out.println(a);
一、i++有三項操做,將值賦給中間變量int temp=i;i=i+1;return i;緩存
二、i=i++有四項操做,將值賦給中間變量int temp=i;i=i+1;i=temp;return i;安全