summaryrefslogtreecommitdiff
path: root/same/src/main/java/com/orbekk/same/VariableUpdaterTask.java
diff options
context:
space:
mode:
authorKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-02-28 15:08:58 +0100
committerKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-02-28 15:08:58 +0100
commitdbb86148a7b53d729085b4ace612e211d7a876ed (patch)
tree95e8542f0996dd2a7d9e4c92c6330b4ed124594e /same/src/main/java/com/orbekk/same/VariableUpdaterTask.java
parente5418063a31eec06835f294ec6e1054ea42f846d (diff)
Add support for more than one listener to variables.
Diffstat (limited to 'same/src/main/java/com/orbekk/same/VariableUpdaterTask.java')
-rw-r--r--same/src/main/java/com/orbekk/same/VariableUpdaterTask.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/same/src/main/java/com/orbekk/same/VariableUpdaterTask.java b/same/src/main/java/com/orbekk/same/VariableUpdaterTask.java
index 471dbc6..f696e17 100644
--- a/same/src/main/java/com/orbekk/same/VariableUpdaterTask.java
+++ b/same/src/main/java/com/orbekk/same/VariableUpdaterTask.java
@@ -7,11 +7,12 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class VariableUpdaterTask<T> extends Thread
implements Variable.OnChangeListener<T> {
private Variable<T> variable;
- private T newValue;
+ private volatile T newValue;
private AtomicBoolean hasNewValue = new AtomicBoolean(false);
private AtomicBoolean isReady = new AtomicBoolean(true);
public VariableUpdaterTask(Variable<T> variable) {
+ super("VariableUpdater");
this.variable = variable;
}
@@ -47,7 +48,9 @@ public class VariableUpdaterTask<T> extends Thread
}
}
+ @Override
public void run() {
+ variable.addOnChangeListener(this);
while (true) {
waitFor(isReady);
waitFor(hasNewValue);
@@ -56,6 +59,7 @@ public class VariableUpdaterTask<T> extends Thread
}
performWork();
}
+ variable.removeOnChangeListener(this);
}
@Override