????????????
????· ?????
????????????????????????????????????????????????????
????· ????????Memory Barriers??
??????????????????????????????????????????
????· ??????
????CPU????????п???????С?洢??λ??????????д???????????????????????С?
????· Lock???????
????Lock????????????????????????????飺
????1???????????????????е?????Э??????檔
????2?????д????????????????CPU?????????????????????Ч??
????· ?????????Э??
????????????£????????????????????????μ???????????????????????????????????????????????????????????????????????????????????ж?????????????????????????????????????Ч???????????????????????ж?д??????????°??????????ж???????????????С?
????· CAS
????CompareAndSwap ????????
????CAS?????????????????????????????CAS?????????????????????????????е?????????????????????????????????????????á??????????????????????????
????· ?????????
?????????????????JMM ??????????????????????????????????????????????е?????????????????????????????????£????????????????????????????????
????Volatile
???????????Lock??????????????Э????????????????volatile???????????
??????????valatile??????д??????????????Lock??????????????????????????
????final
????Final???????????????Σ?????????????final???????γ??????
???????磺final int i ;i????????б???????????????????????0.?????????????????????
?????????final??????????????????????±??????????????????????????????????????У??????????????this?????“???”???????????κ??????Σ?????????????????final??????????????????????????????????????????????????????????
??????????????????????????????????
public class FinalTest{
final int i;
static FinalTest obj;
public FinalTest(){
i  =1;
/**
*????????????????????????????????????????????????????????????obj?????????????????final??
**/
obj = this;
}
}
????Happens-Before????
????happens-before?????
????Happen-Before?????????????????????????????????????????????????????????????????????????????????????ζ????????????????????????????????????????????????
????Happens-Before???????????£?
????· ??????happens-before???????????????????????????н???????????????????????????????????????????????????
????· ??????????????happens-before???????????ζ??Java???????????????happens-before???????????????С????????????????н????????happens-before???????е?????£?????????????????????
??????????????????????????????A????B??????A???????????????B???????ù???????????A???happen-before B????????????A???????????????????B????????B?????
????happens-before????
????1???????????????????е??????????happens-before???????е??????????????
????2????????????????????????????happens-before??????????????????
????3??volatile?????????volatile???д??happens-before??????????????volatile??????
????4????????????Ahappens-before B??????B happens-before C?????A happens-before C??
????5??start()??????????A??в???ThreadB.start()?????A????ThreadB.start()????happens-before?????B?е??????????
????6??join()??????????A??в???ThreadB.join()????????????????B?????????happens-before?????A??ThreadB.join()????????????
????????????Щ??????????Ahappens-before B??????ζ??A????????B??????????????????A???????????B??棬???A??????????????B???