Author: niallp
Date: Sat Mar 12 01:55:22 2011
New Revision: 1080843

URL: http://svn.apache.org/viewvc?rev=1080843&view=rev
Log:
IO-259 - add stop(long) method that specifies the amount of time to wait before 
stopping the monitor - thanks to Dan Checkoway

Modified:
    
commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java

Modified: 
commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java
URL: 
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java?rev=1080843&r1=1080842&r2=1080843&view=diff
==============================================================================
--- 
commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java
 (original)
+++ 
commons/proper/io/trunk/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java
 Sat Mar 12 01:55:22 2011
@@ -147,12 +147,29 @@ public final class FileAlterationMonitor
      * @throws Exception if an error occurs initializing the observer
      */
     public synchronized void stop() throws Exception {
+        stop(interval);
+    }
+
+    /**
+     * Stop monitoring.
+     *
+     * @param stopInterval the amount of time in milliseconds to wait for the 
thread to finish.
+     * A value of zero will wait until the thread to finished (see {@link 
Thread#join(long)})
+     * and a nagative value will stop the process immediately).
+     * @throws Exception if an error occurs initializing the observer
+     * @since Commons IO 2.1
+     */
+    public synchronized void stop(long stopInterval) throws Exception {
         if (running == false) {
             throw new IllegalStateException("Monitor is not running");
         }
         running = false;
         try {
-            thread.join(interval);
+            if (stopInterval < 0) {
+                thread.interrupt();
+            } else {
+                thread.join(stopInterval);
+            }
         } catch (InterruptedException e) {
             Thread.currentThread().interrupt();
         }


Reply via email to