@Override public void run() { running.set(true); beforePollEventLoop(); // Call before-loop hook while (running.get()) { try { boolean relevantEvents = pollEvents(); if (relevantEvents) { restartWaitSettlementTimer(); } } catch (InterruptedException e) { logger.log(Level.FINE, "Could not poll the events. EXITING watcher.", e); running.set(false); } catch (ClosedWatchServiceException e) { logger.log(Level.FINE, "Watch closed or polling failed. EXITING watcher.", e); running.set(false); } } } }, "Watcher/" + root.toFile().getName());