package gr.ntua.ivml.mint.harvesting.concurrent;
import gr.ntua.ivml.mint.harvesting.Harvester;
import gr.ntua.ivml.mint.persistent.User;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class HarvestingExecutor {
private static ThreadPoolExecutor executor;
private static BlockingQueue<Runnable> pendingTasksQueue;
static{
pendingTasksQueue = new ArrayBlockingQueue<Runnable>(100);
executor = new ThreadPoolExecutor(8, 16, 1000, TimeUnit.MILLISECONDS, pendingTasksQueue);
}
public static void executeSigleHarvester(String url){
Harvester harvester = new Harvester(url);
executor.execute(harvester);
}
public static void executeSigleHarvester(String url, User user){
Harvester harvester = new Harvester(url, user);
executor.execute(harvester);
}
public static void executeMultipleHarvesters(ArrayList<String> urls){
Iterator<String> itr = urls.iterator();
while(itr.hasNext()){
Harvester harvester = new Harvester(itr.next());
executor.execute(harvester);
}
}
public static void shutdown(){
executor.shutdown();
}
}