我是ExecutorService的新手,但我不确定我的方法.对于已知任务,我可以处理多达100个线程.我正在使用下面的通用格式,在那里我创建了FutureTasks列表,然后将它们提交给ExecutorService.ExecutorService返回并将这些挂起的结果添加到另一个列表中.然后我迭代这个列表,在每个挂起的结果上调用get().
我的查询是:直到所有100个线程都完成后,依次不会在每个get()上阻塞吗?有一个更好的方法吗 ?
我是否正确假设get()返回Callable实现的call()方法的结果?我正在使用默认的FutureTask类,并没有将其子类化.
ExecutorService exec = Executors.newFixedThreadPool( NUM_THREADS );
List<JobClass> originalList = new ArrayList<JobClass>();
List<SomeOtherClass> pendingResult = new ArrayList<SomeOtherClass>();
List<Future<SomeOtherClass>> resultList = new ArrayList<Future<SomeOtherClass>>();
for( JobClass sc : originalList )
pendingResult.add( submit( sc );
for( Future<SomeOtherClass> future : futures )
resultList.add( future.get(5, TimeUnit.SECONDS) );
Run Code Online (Sandbox Code Playgroud)