Hallo zusammen,
mein Problem ist folgendes:
Ich habe in einer ForEach-Schleife 3 Threads, die alle gleichzeitig ausgeführt werden müssen, allerdings auch jeweils nur diese 3 gleichzeitig. In der Schleife ist es aber so, dass hier dann alle "3er-Pakete" so oft ausgeführt werden, wie die Schleife es angibt.
Also zusammengefasst: Ich möchte die Schleife erst dann fortsetzen, wenn alle Threads beendet sind, aber keine weitere Schleife á la:
hinzufügen, da sich so die GUI aufhängt.
und in Track:
mein Problem ist folgendes:
Ich habe in einer ForEach-Schleife 3 Threads, die alle gleichzeitig ausgeführt werden müssen, allerdings auch jeweils nur diese 3 gleichzeitig. In der Schleife ist es aber so, dass hier dann alle "3er-Pakete" so oft ausgeführt werden, wie die Schleife es angibt.
Also zusammengefasst: Ich möchte die Schleife erst dann fortsetzen, wenn alle Threads beendet sind, aber keine weitere Schleife á la:
Code:
while(!finish)
{
}
Code:
Task progress = new Task<Void>() {
@Override
public Void call() {
this.updateProgress(dwtable.getItems().size(), 1);
while (ydown.Percent < 100) {
if (isCancelled()) {
break;
}
setPercent(null, ydown.Percent);
updateProgress(ydown.Percent, 100);
System.out.println("Prozent: " + ydown.Percent);
}
updateProgress(100, 100);
ydown.Percent = 0;
return null;
}
};
Task download = new Task<Void>() {
@Override
public Void call() {
ydown.download(dwtable.getItems().get(zaehler).getYouTube());
zaehler++;
finish = true;
return null;
}
};
for(Track tr : dwtable.getItems())
{
try {
executor.execute((Runnable) tr);
testProg.progressProperty().bind(progress.progressProperty());
executor.execute(download);
executor.execute(progress);
finish = false;
} catch (Exception ex) {
Logger.getLogger(MainFrameController.class.getName()).log(Level.SEVERE, null, ex);
}
}
Code:
@Override
protected Void call() throws Exception
{
mfc = new MainFrameController();
this.updateProgress(ProgressIndicator.INDETERMINATE_PROGRESS, 100);
while(percent < 100)
{
updateProgress(percent, 100);
}
updateProgress(100, 100);
percent = 0;
return null;
}