我正在尝试并行调用两个线程。 他们每个人都必须返回一个哈希表。同时调用两个线程并返回
在这里我的代码。
ExecutorService executor = Executors.newFixedThreadPool(2);
Future<Map<Object, Map<String,Double>>> task1 = executor.submit(new GettingDataDaemon(request,0));
map = task1.get();
Future<Map<Object, Map<String,Double>>> task2 = executor.submit(new GettingDataDaemon(request,1));
map_compare = task2.get();
executor.shutdown();
while (!executor.isTerminated()) {
}
System.out.println("MAPS CREATED");
其中GettingDataDaemon类:
public class GettingDataDaemon implements Callable<Map<Object, Map<String,Double>>> {
HttpServletRequest request;
int index;
public GettingDataDaemon(HttpServletRequest request, int index){
this.request = request;
this.index = index;
}
@Override
public Map<Object, Map<String,Double>> call() {
AbstractClass absClass = new AbstractClass();
Map<Object, Map<String,Double>> map = absClass.getData(request, index);
System.out.println("Returning map "+(index+1)+"...");
return map;
}
我测试了我的代码,但第二个线程开始第一个结束之后。
出了什么问题?
有没有办法使用这种方法?我可以在'submit'后面调用两个'get'吗? – Fab
是的。你可以在关机后调用futuretask实例 – GurV