public void run()

in commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/DefaultFileMonitor.java [467:513]


    public void run() {
        mainloop: while (!monitorThread.isInterrupted() && this.runFlag) {
            // For each entry in the map
            final Object[] fileNames;
            synchronized (this.monitorMap) {
                fileNames = this.monitorMap.keySet().toArray();
            }
            for (int iterFileNames = 0; iterFileNames < fileNames.length; iterFileNames++) {
                final FileName fileName = (FileName) fileNames[iterFileNames];
                final FileMonitorAgent agent;
                synchronized (this.monitorMap) {
                    agent = this.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() || !this.runFlag) {
                    continue mainloop;
                }
            }

            while (!this.addStack.empty()) {
                this.addFile(this.addStack.pop());
            }

            while (!this.deleteStack.empty()) {
                this.removeFile(this.deleteStack.pop());
            }

            try {
                Thread.sleep(getDelayDuration().toMillis());
            } catch (final InterruptedException e) {
                continue;
            }
        }

        this.runFlag = true;
    }