Is it possible to use volatile variables to allow consistent write-only synchronisation?
This is the code:
public class Controller {
Container cont = new Container();
...
public Object get(){
if(!cont.isLocked()){
return cont.getObject(); //many threads can read at the same time
}
else synchronized(cont){
return cont.getObject(); //threads wait until write is finished
}
}
public void set(Object o){
synchronized(cont){
cont.lock();
cont.setObject(o);
cont.unlock();
}
}
}
public class Container {
private volatile boolean lock = false;
private Object data;
public Container(){
}
public void lock() {
lock = true;
}
public void unlock() {
lock = false;
}
public boolean isLocked() {
return lock;
}
public void setObject(Object o) {
data = o;
}
public Object getObject() {
return data;
}
}
Will it work, or will it break, what do you think?