@Override protected SchedulerServiceLimiter getLimiter(int parallelCount, boolean limitFutureListenersExecution) { return new SchedulerServiceLimiter(scheduler, parallelCount, limitFutureListenersExecution); }
@Override public SchedulerService makeSchedulerService(int poolSize, boolean prestartIfAvailable) { SchedulerService scheduler = schedulerFactory.makeSchedulerService(poolSize, prestartIfAvailable); int limiterAmount = Math.min(minLimiterAmount, poolSize); return new SchedulerServiceLimiter(scheduler, limiterAmount); } }
@Override protected SchedulerServiceLimiter makeLimiter(String limiterThreadName) { return new SchedulerServiceLimiter(StringUtils.isNullOrEmpty(limiterThreadName) ? scheduler : new ThreadRenamingSchedulerService(scheduler, limiterThreadName, false), getMaxConcurrencyPerKey(), limitFutureListenersExecution); }
@Override protected SchedulerServiceLimiter makeLimiter(String limiterThreadName) { return new SchedulerServiceLimiter(StringUtils.isNullOrEmpty(limiterThreadName) ? scheduler : new ThreadRenamingSchedulerService(scheduler, limiterThreadName, false), getMaxConcurrencyPerKey(), limitFutureListenersExecution); }
@Test @Override @SuppressWarnings("unused") public void constructorFail() { try { new SchedulerServiceLimiter(null, 100); fail("Exception should have thrown"); } catch (IllegalArgumentException e) { // expected } try { new SchedulerServiceLimiter(scheduler, 0); fail("Exception should have thrown"); } catch (IllegalArgumentException e) { // expected } }
@Test public void isShutdownTest() { PriorityScheduler executor = new StrictPriorityScheduler(1); try { SchedulerServiceLimiter limiter = new SchedulerServiceLimiter(executor, 1); assertFalse(limiter.isShutdown()); executor.shutdownNow(); assertTrue(limiter.isShutdown()); } finally { executor.shutdownNow(); } }