public boolean start() {
        if (!this.isTailing.compareAndSet(false, true)) {
            return false;
        }
        final boolean willReadFromEnd = this.willReadFromEnd();
        LogWatchTailingManager.LOGGER.debug("Tailer {} ignore existing file contents.", willReadFromEnd ? "will"
                : "won't");
        this.tailer = new SplitlogTailer(this.watch.getWatchedFile(), new LogWatchTailerListener(this),
                this.delayBetweenReads, this.willReadFromEnd(), this.reopenBetweenReads, this.bufferSize);
        LogWatchTailingManager.EXECUTOR.submit(this.tailer);
        final long start = System.nanoTime();
        this.tailer.waitUntilStarted();
        final long duration = System.nanoTime() - start;
        LogWatchTailingManager.LOGGER.debug("It took {} ms for the tailing to actually start.",
                TimeUnit.NANOSECONDS.toMillis(duration));
        final long iterationNum = this.numberOfTimesThatTailerWasStarted.incrementAndGet();
        LogWatchTailingManager.LOGGER.info("Tailing #{} started for {}.", iterationNum, this.watch);
        return true;
    }
public boolean start ( ) { if ( ! this . isTailing . compareAndSet ( false , true ) ) { return false ; } final boolean willReadFromEnd = this . willReadFromEnd ( ) ; LogWatchTailingManager . LOGGER . debug ( "Tailer {} ignore existing file contents." , willReadFromEnd ? "will" : "won't" ) ; this . tailer = new SplitlogTailer ( this . watch . getWatchedFile ( ) , new LogWatchTailerListener ( this ) , this . delayBetweenReads , this . willReadFromEnd ( ) , this . reopenBetweenReads , this . bufferSize ) ; LogWatchTailingManager . EXECUTOR . submit ( this . tailer ) ; final long start = System . nanoTime ( ) ; this . tailer . waitUntilStarted ( ) ; final long duration = System . nanoTime ( ) - start ; LogWatchTailingManager . LOGGER . debug ( "It took {} ms for the tailing to actually start." , TimeUnit . NANOSECONDS . toMillis ( duration ) ) ; final long iterationNum = this . numberOfTimesThatTailerWasStarted . incrementAndGet ( ) ; LogWatchTailingManager . LOGGER . info ( "Tailing #{} started for {}." , iterationNum , this . watch ) ; return true ; }
Start the tailer on a separate thread. Only when a tailer is running can
{@link Follower}s be notified of new {@link Message}s from the log.

@return True if the start was scheduled, false if scheduled already.