@Override protected void serviceStop() { if (renewalTimer != null) { renewalTimer.cancel(); } appTokens.clear(); this.renewerService.shutdown(); dtCancelThread.interrupt(); try { dtCancelThread.join(1000); } catch (InterruptedException e) { e.printStackTrace(); } if (tokenKeepAliveEnabled && delayedRemovalThread != null) { delayedRemovalThread.interrupt(); try { delayedRemovalThread.join(1000); } catch (InterruptedException e) { LOG.info("Interrupted while joining on delayed removal thread.", e); } } }