【发布时间】:2012-11-01 23:33:06
【问题描述】:
AtomicReference 的语义是什么?
如果我这样做:
AtomicReference<CustomObject> ref = new AtomicReference<CustomObject>();
然后我做:
public void someMethod(){
//do something
ref.set(loadNewData());
}
private final Sempahore updatePermit = new Sempahore(1);
private CustomObject loadNewData(){
CustomObject obj = null;
if (updatePermit.tryAcquire()) {
obj = ...; //do the loading and create Object
updatePermit.release();
} else {
//update already running, wait
updatePermit.acquire();
//release the permit immediately
updatePermit.release();
obj = ref.get(); //????
}
return obj;
}
是否有保证在线obj = ref.get(); //???? get 将返回CustomObject 的最新鲜版本?
这与post的assylias的回答有关:
【问题讨论】:
标签: java multithreading concurrency java.util.concurrent