Or you could have the stop() method call cancel directly.  That way you wouldn't need to wait for the time run() is run.