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

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

????2??????volatile????2 happens before 3??

????3??????happens before ??????????1 happens before 4??

????????happens before ???????位???????????锟�?

??????????校?????????????????????????????happens before ?????????????????????????????????volatile??????????????????些?????????happens before?????

????????A???写???volatile??????B????????volatile??????A?????写volatile?????????锌??????????????B????????volatile????????????????B???????

????volatile写-???????????

????volatile写????????????锟�?

?????? ??写???volatile???????JMM??????????????????械?????????渭?????妾�

?????????????????VolatileExample????????????A???????writer()????????????B???reader()?????????????????????????械?flag??a??????????????????A???volatile写???????????????????

?????????????????A??写flag?????????????A?斜????A???1?????????????????????渭???????小?????????????A????????械??????????????渭??

????volatile??????????????锟�?

?????? ???????volatile???????JMM??????????????????????效????????????????????卸???????????

?????????????B??????volatile???????????????????????

?????????????????flag?????????????B??????????效??????????B???????????卸??????????????B?????????????卤??????B????????械????????????????渭????

????????????volatile写??volatile????????????????????????????????B?????volatile??????写???A??写???volatile?????????锌?????????????????????????????B?????

?????????volatile写??volatile??????????????????

?????? ???A写???volatile????????????????A???????????????volatile?????????????????????????????????????????

?????? ???B?????volatile????????????????B??????????????????????写???volatile????????????????????????????

?????? ???A写???volatile????????????B?????volatile???????????????????????A?????????????B?????????