package com.trendmicro.mist.util;
import java.util.ArrayList;
public class ParallelExecutor<T> {
private ArrayList<Executor> executorList = new ArrayList<Executor>();
public interface Runner<T> {
T run();
}
class Executor extends Thread {
private T result;
private Runner<T> runner;
public Executor(Runner<T> runner) {
this.runner = runner;
}
public void run() {
result = runner.run();
}
public T getResult() {
return result;
}
}
public void addRunner(Runner<T> runner) {
executorList.add(new Executor(runner));
}
public ArrayList<T> waitCompleted() {
ArrayList<T> resultList = new ArrayList<T>();
for(Executor exe : executorList)
exe.start();
for(Executor exe : executorList) {
try {
exe.join();
resultList.add(exe.getResult());
}
catch(InterruptedException e) {
}
}
return resultList;
}
}