タスクを 'x' 回呼び出し、Java ですべて並列に実行する最も簡単な方法を見つけようとしています。タスクには文字列変数があり、その値は呼び出しごとに一意である必要があり、文字列と int の結果を返します。
私はインターネットでリソースを探していましたが、今はひどく混乱しています。
タスクを 'x' 回呼び出し、Java ですべて並列に実行する最も簡単な方法を見つけようとしています。タスクには文字列変数があり、その値は呼び出しごとに一意である必要があり、文字列と int の結果を返します。
私はインターネットでリソースを探していましたが、今はひどく混乱しています。
タスクを並行して実行するには、最初にExecutorServiceを選択する必要があります。彼らがドキュメントで言うように、あなたは1つのインスタンスを取得します。
ExecutorService service = Executors.newFixedThreadPool(poolSize);
タスクが値を返す必要がある場合は、
Future<T> submit(Callable<T> task);
関数。タスクにCallable
インターフェイスを実装させ、必要な結果を返します。タスクをサービスに送信し、オブジェクトを介して結果を待ちFuture
ます。大まかなスケッチ:
public class MyTask implements Callable<StringInt> {
public MyTask(String inputParameter) { ... }
public StringInt call() { ... }
}
...
List<Future<StringInt>> results = new ArrayList<Future<StringInt>>();
ExecutorService service = Executors.newFixedThreadPool(16);
for (String inputParameter : inputParameters) {
// Create tasks and start parallel execution
results.add(service.submit(new MyTask(inputParameter)));
}
for (Future<StringInt> result : results) {
// Wait for tasks to end, and get result
StringInt resultValue = result.get();
...
}