synchronized Thread triggerUpdate() {
        if (inProgress != null) {
            if (!inProgress.isAlive()) {
                LOGGER.log(Level.WARNING, "Previous {0} monitoring activity died without cleaning up after itself",
                    getDisplayName());
                inProgress = null;
            } else if (System.currentTimeMillis() > inProgressStarted + getMonitoringTimeOut() + 1000) {
                // maybe it got stuck?
                LOGGER.log(Level.WARNING, "Previous {0} monitoring activity still in progress. Interrupting",
                        getDisplayName());
                inProgress.interrupt();
                inProgress = null; // we interrupted the old one so it's now dead to us.
            } else {
                // return the in progress
                return inProgress;
            }
        }
        final Record t = new Record();
        t.start();
        // only store the new thread if we started it
        inProgress = t;
        inProgressStarted = System.currentTimeMillis();
        return inProgress;
    }
synchronized Thread triggerUpdate ( ) { if ( inProgress != null ) { if ( ! inProgress . isAlive ( ) ) { LOGGER . log ( Level . WARNING , "Previous {0} monitoring activity died without cleaning up after itself" , getDisplayName ( ) ) ; inProgress = null ; } else if ( System . currentTimeMillis ( ) > inProgressStarted + getMonitoringTimeOut ( ) + 1000 ) { LOGGER . log ( Level . WARNING , "Previous {0} monitoring activity still in progress. Interrupting" , getDisplayName ( ) ) ; inProgress . interrupt ( ) ; inProgress = null ; } else { return inProgress ; } } final Record t = new Record ( ) ; t . start ( ) ; inProgress = t ; inProgressStarted = System . currentTimeMillis ( ) ; return inProgress ; }
/*package