Java????????????????
???????????? ???????[ 2016/5/10 14:22:54 ] ??????????????????? JAVA
?????????????
????????????????????????????????????????????濉�???浠�???????尾???????????????????卸???????????????械????????????????????????????????????????????????????尾???????????????????????????????????????????????????????????????伞????纾�??long??????????????????????????????位???位???胁?????????伞??????纾�??????????????? i++ ???????????????????????瑁�??1????????? i ???????2???? i ???屑??????????3???????写????妾�?????????????????????????????
????????????????械???????????????????????????????????????????????????????????Java?械?Synchronized??Lock??????????????味??????Synchronized??????????????????????????CAS??Compare And Swap????????????????????????????????????锟�??????锟�??????????????????????????校????????????????????????CAS???些?????2??????效??????????????????????????????????????????????锟�?CAS??????卸???
????????????
???????????????????JVM??????????????????JVM????????????????????????????
??????????????????????????????????????????????妫�????CPU??????????????????????????????????小?娲�????CPU?????????????????????????????????????味?????????????泄?????????????写????????????????????懈????????????????????????????????????????械??????????????????渭??????????????1??????????????????????2??锌???????????1???????????????????????????纬???????????????2??????????
package com.paddx.test.concurrent;
public class VisibilityTest {
private static boolean ready;
private static int number;
private static class ReaderThread extends Thread {
public void run() {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (!ready) {
System.out.println(ready);
}
System.out.println(number);
}
}
private static class WriterThread extends Thread {
public void run() {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
number = 100;
ready = true;
}
}
public static void main(String[] args) {
new WriterThread().start();
new ReaderThread().start();
}
}
????????????????纬????????????100??ready?????????????????????????????????????????????????????????????????????????谐?????????蔚?????
???????????????????????锌????????????????写????WriterThread??????ready=true????????ReaderThread????????????????????????false?????????????????????if (!ready)?????卸????写?????????????System.out.println(ready)????????写?????械???????????????????锌??????????????????????Java ?锌????Synchronized??Volatile???????????????????????????????蟹?????
?????濉�?????
?????????????????????????????????????????????????????????????
??????1??????????????????????????????????????????????锟�????????掳?????????????
??????2????????械????????????????????????????屑?????Instruction-Level Parallelism?? ILP??????????????????小????????????????????????????????????????????????????
??????3????????????????????????????????/写????????????眉????娲�???????????????????????小?
??????????????慰????JSR 133 ?卸??????????????????
???????????械??1???????????????????????? 1 ?????????? 3????小??????? 1 ????校?r2????????????? 4 ??写???????????? 3 ????校?r1????????????? 2 写????????????薪??????????r2==2??r1==1???????????“??????”???渭??????????2???????????????????????????????????1?????2????????????????????????r2==2??r1==1??????Java ????????Synchronized??Volatile???????????
???????????
?????????Java ????????械???????????????????些???????????????谢?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????校???????????泻????????
??????

???路???
??????????????????
2023/3/23 14:23:39???写?貌??????????
2023/3/22 16:17:39????????????????????些??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???路???????路
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11