???????????-?????????happens before ???

????????java?????????????????????????????????????????????????????????????????????????????????????

???????????????-????????????

class MonitorExample {
    int a = 0;

    public synchronized void writer() {  //1
        a++;                             //2
    }                                    //3

    public synchronized void reader() {  //4
        int i = a;                       //5
        ……
    }                                    //6
}

???????????A???writer()????????????B???reader()??????????happens before????????????????happens before ?????????????

????1???????????????1 happens before 2?? 2 happens before 3; 4 happens before 5?? 5 happens before 6??

????2?????????????????3 happens before 4??

????3??????happens before ????????2 happens before 5??

????????happens before ???????λ???????????£?

??????????У?????????????????????????????happens before ???????????????????????????????????????????????????????????Щ?????????happens before?????

???????????????A????????????????B?????????????????У?2 happens before 5?????????A????????????п?????????????????B?????????????????????B???????

?????????????????????

?????????????????JMM??????????????????е?????????μ???????С????????MonitorExample?????????A????????????????????????????£?

????????????????JMM??????????????????????Ч?????????????????????????????????????????????????????????????????????????????

????????????-??????????????volatileд-??????????壬????????????????volatileд?????????????壻???????volatile???????????????塣

????????????????????????????????????

?????? ???A????????????????????A???????????????????????????????????A??????????????????????

?????? ???B????????????????????B??????????????????????????????????????????????????????

?????? ???A?????????????B???????????????????????????A?????????????B?????????