これを行うには、複数のスレッドを実行する必要があります。これにより、複数の呼び出しを並行して実行できます。これは手動で行うことができますが、などの既存のユーティリティを使用することをお勧めしますThreadPoolExecutor
。これによりRunnables
、それらが並行して実行されます。
例えば
// Create an executor that can run up to 10 jobs in parallel.
ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 10, 5, TimeUnit.Seconds, new LinkedBlockingQueue());
while(it.hasNext()) {
// NB: Final is needed so that this can be accessed within the anonymous inner class
final MyObject obj = (MyObject)it.next();
// Queue up the doSomething to be run by one of the 10 threads
executor.execute(new Runnable() {
public void run() {
doSomething(obj);
}
}
}
このコードを使用すると、ループはdoSomethingメソッドの実行をスケジュールするだけです。その後、次の実行に進みます。実際のdoSomethingは、によって管理される10個のスレッドの1つによって実行されThreadPoolExecutor
ます。