Collection<Callable<T>> tasks
を作成して呼び出して使用する、スレッドプールを多用するコードがいくつかありますExecutorService.invokeAll(tasks)
。
for (Future<Object> future : threadPool.invokeAll(tasks)) {
Object object = future.get();
// Calling thread effectively blocks on invokeAll().
}
私のアプリでは、のサイズはtasks
大きく異なります。実際、ほとんどの場合、は単一のタスクExecutorService.invokeAll()
で呼び出されます。私が使用しているの実装は、その実装は常にスレッドプールでタスクを実行するように見えます(呼び出しスレッドでは決してありません)。invokeAll()
ThreadPoolExecutor.execute()
単一のタスクの場合、別のスレッドに送信するよりも、現在のスレッドでタスクを呼び出す方が効率的でしょうか?