Der Java-Stream startet die nächste Karte, bevor er die vorherige beendetJava

Java-Forum
Guest
 Der Java-Stream startet die nächste Karte, bevor er die vorherige beendet

Post by Guest »

Ich habe 2 Testamentsvollstrecker:

Code: Select all

ExecutorService executorDownload = Executors.newFixedThreadPool(n);
ExecutorService executorCalculate = Executors.newFixedThreadPool(m);
Zuerst muss ich Aufgaben in Executor Download einfügen, dann, nachdem sie abgeschlossen sind, sie in ExecutorCalculate einfügen und dann das Ergebnis erhalten. Ich habe den nächsten Stream geschrieben:

Code: Select all

long count = IntStream.range(0, TASK_NUMBER)
.boxed()
.parallel()
.map(i -> executorDownload.submit(new Download(i)))
.map(future -> calculateResultFuture(executorCalculate, future))
.filter(Objects::nonNull)
.filter(Main::isFutureCalculated)
.count();

public static Future calculateResultFuture(ExecutorService executorCalculate, Future future) {
try {
return executorCalculate.submit(new Calculate(future.get()));
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
return null;
}

public static boolean isFutureCalculated(Future future) {
try {
return future.get().found;
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
return false;
}
Ist es irgendwie möglich, damit anzufangen

Code: Select all

.map(future -> calculateResultFuture(executorCalculate, future))
vor

Code: Select all

.map(i -> executorDownload.submit(new Download(i)))
ist beendet. Ich brauche den Start der zweiten Karte direkt nach dem Start der ersten Karte.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post