in commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/DefaultFileMonitor.java [471:517]
public void run() {
mainloop: while (!monitorThread.isInterrupted() && runFlag) {
// For each entry in the map
final Object[] fileNames;
synchronized (monitorMap) {
fileNames = monitorMap.keySet().toArray();
}
for (int iterFileNames = 0; iterFileNames < fileNames.length; iterFileNames++) {
final FileName fileName = (FileName) fileNames[iterFileNames];
final FileMonitorAgent agent;
synchronized (monitorMap) {
agent = monitorMap.get(fileName);
}
if (agent != null) {
agent.check();
}
if (getChecksPerRun() > 0 && (iterFileNames + 1) % getChecksPerRun() == 0) {
try {
Thread.sleep(getDelayDuration().toMillis());
} catch (final InterruptedException e) {
// Woke up.
}
}
if (monitorThread.isInterrupted() || !runFlag) {
continue mainloop;
}
}
while (!addStack.empty()) {
addFile(addStack.pop());
}
while (!deleteStack.empty()) {
removeFile(deleteStack.pop());
}
try {
Thread.sleep(getDelayDuration().toMillis());
} catch (final InterruptedException e) {
continue;
}
}
runFlag = true;
}