?????嵥 2. ?? volatile ???????????????

 

volatile boolean shutdownRequested;
...
public void shutdown() { shutdownRequested = true; }
public void doWork() {
while (!shutdownRequested) {
// do stuff
}
}

???????????????????? shutdown() ???? —— ?????????????? —— ??????????????????????????? shutdownRequested ??????????????????? JMX ????????GUI ???????е??????????????? RMI ???????? Web ??????????????????? synchronized ???д??????????嵥 2 ????? volatile ???????д?鷳??????? volatile ????????????????????????????????κ??????????????????????? volatile??
?????????????????????????????????????????????????shutdownRequested ????? false ???? true???????????????????????????????????????????????????????????????????????2?????????? false ?? true????????? false??????????????Щ?????????????????????????
?????? #2???????????????one-time safe publication??
????????????????????????????????????д???????????????????????????????????????????£??????????????????????????????????????д??????????????????????????????????????????double-checked-locking??????????????ж????????????????????????ж??????????????????????????????????μ??????????????????????????????????????????
??????????????????????????????????????? volatile ??????嵥 3 ???????????????к????????????δ??????????Щ????????????????????????Щ?????????????????????Щ???????????????????

?????嵥 3. ?? volatile ???????????????????

 

public class BackgroundFloobleLoader {
public volatile Flooble theFlooble;
public void initInBackground() {
// do lots of stuff
theFlooble = new Flooble();  // this is the only write to theFlooble
}
}
public class SomeOtherClass {
public void doWork() {
while (true) {
// do some stuff...
// use the Flooble?? but only if it is ready
if (floobleLoader.theFlooble != null)
doSomething(floobleLoader.theFlooble);
}
}
}

??????? theFlooble ???ò??? volatile ?????doWork() ?е?????????? theFlooble ???????????????????????????? Flooble??
???????????????????????????????????????????????????????Ч???????????Ч???????ζ?????????????????????????????volatile ???????????????????????????????????????????????????????????????????????????????
?????? #3?????????independent observation??
?????????? volatile ????????????????? “????” ????????????????á????磬??????????????????????о????????????????????????????????θ?????????????°??????????? volatile ????????????????????????????????????????????μ???????
???????????????????ó??????????????????????嵥 4 ????????????????μ??????ε??????????????????????? lastUser ???????????????????????????????á?