blob: 9f8289923eb9c9ae23558287a88b1ffe2f8cb7d2 [file] [log] [blame]
package aQute.libg.filelock;
import java.io.*;
public class DirectoryLock {
final File lock;
final long timeout;
final public static String LOCKNAME = ".lock";
public DirectoryLock(File directory, long timeout) {
this.lock = new File(directory, LOCKNAME);
this.lock.deleteOnExit();
this.timeout = timeout;
}
public void release() {
lock.delete();
}
public void lock() throws InterruptedException {
if (lock.mkdir())
return;
long deadline = System.currentTimeMillis() + timeout;
while (System.currentTimeMillis() < deadline) {
if (lock.mkdir())
return;
Thread.sleep(50);
}
}
}