public void run()

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;
    }