org.python.modules.PyLock Maven / Gradle / Ivy
// Copyright (c) Corporation for National Research Initiatives
package org.python.modules;
import org.python.core.*;
public class PyLock extends PyObject {
private boolean locked=false;
//private Object lock = new Object();
public boolean acquire() {
return acquire(true);
}
public synchronized boolean acquire(boolean waitflag) {
if (waitflag) {
while (locked) {
try {
wait();
} catch (InterruptedException e) {
System.err.println("Interrupted thread");
}
}
locked = true;
return true;
} else {
if (locked) {
return false;
} else {
locked = true;
return true;
}
}
}
public synchronized void release() {
if (locked) {
locked = false; notifyAll();
} else {
throw Py.ValueError("lock not acquired");
}
}
public boolean locked() {
return locked;
}
}