Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
2.5
-
Components managed by a DI Framework
Description
The thread in FileAlterationMonitor wasn't stopped by the `stop(int)` method, which forbid application to shutdown until 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 example to understand
Bad behavior
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.
Good behavior
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.
Attachments
Issue Links
- links to