package lda.wikievidence.modelcreation; import java.util.List; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import org.apache.log4j.Logger; public class LDAExecutor { public void executeThreadPool(List<LDAClient> lst) { int poolsize = lst.size(); BlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>( poolsize); ThreadPoolExecutor ex = new ThreadPoolExecutor(poolsize, poolsize, 300, TimeUnit.SECONDS, queue); for (LDAClient client : lst) { ex.execute(client); } ex.shutdown(); try { while (!ex.awaitTermination(300, TimeUnit.SECONDS)) { Logger.getRootLogger().info( "InitializationPhase not completed yet! Still waiting " + ex.getActiveCount()); } } catch (InterruptedException e) { Logger.getRootLogger().warn(e.getStackTrace()); } } }