public ParallelDeploymentDirectoryWatcher(ArchiveDeployer<Domain> domainArchiveDeployer, ArchiveDeployer<Application> applicationArchiveDeployer, ObservableList<Domain> domains, ObservableList<Application> applications, ReentrantLock deploymentLock) { super(domainArchiveDeployer, applicationArchiveDeployer, domains, applications, deploymentLock); this.threadPoolExecutor = new ThreadPoolExecutor(0, 20, 5, TimeUnit.SECONDS, new SynchronousQueue(), new WaitPolicy()); }
private void configureThreadPoolExecutor(String name, ThreadingProfile tp, ThreadPoolExecutor pool) { configureThreadFactory(name, tp, pool); if (tp.getRejectedExecutionHandler() != null) { pool.setRejectedExecutionHandler(tp.getRejectedExecutionHandler()); } else { switch (tp.getPoolExhaustedAction()) { case ThreadingProfile.WHEN_EXHAUSTED_DISCARD_OLDEST : pool.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardOldestPolicy()); break; case ThreadingProfile.WHEN_EXHAUSTED_RUN : pool.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); break; case ThreadingProfile.WHEN_EXHAUSTED_ABORT : pool.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()); break; case ThreadingProfile.WHEN_EXHAUSTED_DISCARD : pool.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy()); break; default : // WHEN_EXHAUSTED_WAIT pool.setRejectedExecutionHandler(new WaitPolicy(tp.getThreadWaitTimeout(), TimeUnit.MILLISECONDS)); break; } } }