think it should rather be:

    updaterScheduler.scheduleAtFixedRate(new Updater(needsUpdate, this), 0, Math.max(1000, interval / 2), TimeUnit.MILLISECONDS);

to ensure:

* it is rendered ASAP
* it is executed faster than file are updated to avoid latency between both polling systems (if nothing to render it does nothing so it can be called "often")

wdyt?