public final class ConcurrentValue<T> extends Object
MainThread cv.set(1); Thread1 cv.acquire(3); Thread2 cv.acquire(4); Thread3 cv.acquire(100); Thread4 cv.acquire(new Object() { public boolean equals(Object other) { return other.equals(2) || other.equals(3); } }); Thread5 cv.acquire(1); ... // Thread 1,2,3 and 4 are blocked // Thread 5 isn't blocked. MainThread cv.set(3); // Thread 1 and 4 are unblocked. // Thread 2 and 3 are still blocked.
Constructor and Description |
---|
ConcurrentValue(T value) |
public ConcurrentValue(T value)
public T get()
public void set(T newValue)
public void reevaluate()
acquire(Object)
and the parameter
passed changed. acquire(Object)
generates a reevaluation automatically.public void acquire(Object accept) throws InterruptedException
Return when value accept is equal to get()
.
InterruptedException
Copyright (c) 2011, 2012 Eike Stepper (Berlin, Germany) and others.