blob: 6e6b11e97b6054dd63747d891ebad082fad0534f [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);
}
}
}