@Test public void testNotificationExecutor() throws Exception { ListeningExecutorService executor = SingletonHolder.getDefaultNotificationExecutor(); ThreadPoolExecutor tpExecutor = (ThreadPoolExecutor) setAccessible(executor.getClass().getDeclaredField("delegate")).get(executor); BlockingQueue<Runnable> queue = tpExecutor.getQueue(); for (int idx = 0; idx < 100; idx++) { final int idx2 = idx; logger.info("Adding {}\t{}\t{}", idx, queue.size(), tpExecutor.getActiveCount()); executor.execute( new Runnable() { @Override public void run() { logger.info("in {}", idx2); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } logger.info("out {}", idx2); } }); } executor.shutdown(); executor.awaitTermination(10, TimeUnit.SECONDS); }
@Override public void close() { source.close(); cachedAuths.invalidateAll(); executorService.shutdown(); try { executorService.awaitTermination(5, TimeUnit.SECONDS); } catch (InterruptedException e) { ConsoleLogger.writeStackTrace(e); } }
@Override public boolean shutdown(Thread mainSiteThread) throws InterruptedException { if (m_faultDistributor != null) { m_faultDistributor.shutDown(); } VoltDB.wasCrashCalled = false; VoltDB.crashMessage = null; m_snapshotCompletionMonitor.shutdown(); m_es.shutdown(); m_es.awaitTermination(1, TimeUnit.DAYS); m_statsAgent.shutdown(); m_hostMessenger.shutdown(); return true; }
/** * Attempt to complete submitted requests on close so that as much information is recorded as * possible. This aids debugging when close is called during exception processing. */ @Override public void close() { requestService.shutdown(); try { if (!requestService.awaitTermination(timeoutMillis, TimeUnit.MILLISECONDS)) { LOG.warn( Joiner.on(System.lineSeparator()) .join( "A BlockingHttpEndpoint failed to shut down within the standard timeout.", "Your build might have succeeded, but some requests made to ", this.url + " were probably lost.", "Here's some debugging information:", requestService.toString())); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } }
@Override public boolean awaitTermination(long l, TimeUnit timeUnit) throws InterruptedException { return delegate.awaitTermination(l, timeUnit); }