Ich versuche, zwei Threads parallel aufzurufen. Jeder von ihnen muss eine Hash-Tabelle zurückgeben.Rufen Sie zwei Threads gleichzeitig mit return
Hier mein Code.
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");
wo die GettingDataDaemon Klasse:
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;
}
ich meinen Code getestet, aber der zweite Thread beginnt, nachdem der erste endete.
Was ist los?
Gibt es eine Möglichkeit, diesen Ansatz zu verwenden? Könnte ich die beiden "Get" nach "Submit" nennen? – Fab
Ja. Sie können nach dem Herunterfahren auf die futuretask-Instanz zugreifen – GurV