Anthony RAYMOND created IO-535:
----------------------------------

             Summary: FileAlterationMonitor
                 Key: IO-535
                 URL: https://issues.apache.org/jira/browse/IO-535
             Project: Commons IO
          Issue Type: Bug
    Affects Versions: 2.5
         Environment: Components managed by a DI Framework
            Reporter: Anthony RAYMOND
            Priority: Critical


The thread if FileAlterationMonitor wasn't stopped by the `stop(int)` method, 
which forbid application to shutdown unless all `Thread` are exited (if 
FileAlterationMonitor is part of a DI managed component).

This behavior conflict with the method javadoc `@param stopInterval the amount 
of time in milliseconds to wait for the thread to finish.`

### Simple exemple to understand

```java
    Thread t = new Thread(() -> {
        try {
            Thread.sleep(500000);
        } catch (final InterruptedException e) {
        }
    });
    t.start();
    t.join(50);
   // Ok, we reach this point until 500000ms are elapsed, but the thread is 
still alive.
   //   because Thread#join(int) does not kill the thread. And the thread 
remains alive.
```

```java
    Thread t = new Thread(() -> {
        try {
            Thread.sleep(500000);
        } catch (final InterruptedException e) {
        }
    });
    t.start();
    t.join(50);
    t.interupt();
   // Thread is exited
```
In this case, we waited the given time BEFORE exiting the `Thread`, as 
described in the javadoc, and the `Thread` is now finished and killed.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to