Python "Event" equivalent in Java?
java, multithreading, python
Solution
The `Object.wait()` `Object.notify()`/`Object.notifyAll()`.
Or `Condition.await()` and `Condition.signal()`/`Condition.signalAll()` for Java 5+.
Edit: Because the python specification is similar how we usually wait a Java implementation would look like this:
class Event {
Lock lock = new ReentrantLock();
Condition cond = lock.newCondition();
boolean flag;
public void doWait() throws InterruptedException {
lock.lock();
try {
while (!flag) {
cond.await();
}
} finally {
lock.unlock();
}
}
public void doWait(float seconds) throws InterruptedException {
lock.lock();
try {
while (!flag) {
cond.await((int)(seconds * 1000), TimeUnit.MILLISECONDS);
}
} finally {
lock.unlock();
}
}
public boolean isSet() {
lock.lock();
try {
return flag;
} finally {
lock.unlock();
}
}
public void set() {
lock.lock();
try {
flag = true;
cond.signalAll();
} finally {
lock.unlock();
}
}
public void clear() {
lock.lock();
try {
flag = false;
cond.signalAll();
} finally {
lock.unlock();
}
}
}
Problem
What's the closest thing in Java (perhaps an idiom) to threading.Event in Python?