プロセス プールを作成するプロジェクトが github にあります。見てください。https://github.com/shri30/ProcessPool
次に例を示します。
サンプルコード:
public class UsageExample implements JTask{
public static void main(String args[]) throws Exception{
//Create a pool with name : UsageExample-Process and number of processes : 3
ExecutorService pool = ProcessPool.createProcessPool("UsageExample-Process", 3);
ProcessFuture<TaskStatus> pf1 = pool.submit(Task.class, args);
ProcessFuture<TaskStatus> pf2 =pool.submit(Task.class, args);
ProcessFuture<TaskStatus> pf3 =pool.submit(Task.class, args);
ProcessFuture<TaskStatus> pf4 =pool.submit(Task.class, args);
ProcessFuture<TaskStatus> pf5 =pool.submit(Task.class, args);
//the get method blocks the call to get the result
TaskStatus ts= pf1.get();
Status status = ts.getStatus();
if(status == Status.SUCESS){
//code goes here
}
TaskStatus ts2= pf2.get();
Status status2 = ts.getStatus();
if(status == Status.SUCESS){
//code goes here
}
TaskStatus ts3= pf3.get();
Status status3 = ts.getStatus();
if(status == Status.SUCESS){
//code goes here
}
TaskStatus ts4= pf4.get();
Status status4 = ts.getStatus();
if(status == Status.SUCESS){
//code goes here
}
//terminate the pool - pass true for graceful termination, the second parameter is minutes
//wait for task completion
pool.terminate(true, 3000);
}
}
class Task implements JTask{
public static void main(String[] args) {
System.out.println("Executing the sample task");
}
}