?????????????????????????????????????????????δ?????????????????????е??????????

????δ????????????????????????????????????????????????????????????????μ????????????????????????A??B???????????????B1->A1->A2->B2->A3->B3?????????????????????????????????????е?????????????????????????????

???????????JMM?????????????δ?????????JMM?в????????????????????????????????????????????????????????????磬????????д????????????????????У?????????μ?????????????д??????????????????????????????????????????д????????????б?????????С???е??????????????д??????????μ????????????д??????????????????????????????£???????????????????????????????????

????????????????????Ч??

????????????????????????ReorderExample?ü?????????????????????????????ξ????????????

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

class SynchronizedExample {
int a = 0;
boolean flag = false;

public synchronized void writer() {
    a = 1;
    flag = true;
}

public synchronized void reader() {
    if (flag) {
        int i = a;
        ……
    }
}
}

????????????????У?????A??????writer()??????B??????reader()????????????????????????????????JMM?淶???ó??????н??????ó?????????????????е???н?????????????ó????????????????е????????????

??????????????????У????в????????????????????С?????JMM?У???????????????????????JMM?????????????????“???”??????????????????????????????壩??JMM???????????????????????????????????????Щ?????????????????????????????????????????????????????????????????????????????A?????????????????????????????????????е??????????????B???????“???”?????A???????????????????????????????????Ч???????и????????н????

????????????????????JMM???????????????????????????????????????н????????£?????????????????????????????????????