ParallelJob.java
package eu.javaexperience.multithread;
import java.util.Vector;
import eu.javaexperience.multithread.notify.WaitForEvents;
public abstract class ParallelJob<P,R> implements Job<P>
{
private WaitForEvents wait;
private Vector<R> ret;
@Override
public void exec(P param)
{
try
{
R cucc = execute(param);
if(cucc != null)
ret.add(cucc);
}
catch(Throwable t)
{
t.printStackTrace();
throw t;
}
finally
{
wait.call();
}
}
protected abstract R execute(P param);
ParallelJob<P,R> putParallelInternalArgs(WaitForEvents wait,Vector<R> v)
{
this.wait = wait;
ret = v;
return this;
}
}