Hallo,
folgender Beispiel-Code:
Funktioniert wunderbar.
Jetzt meine Frage:
Wie stelle ich am Besten an, dass der Abarbeitungsstand der einzelnen Threads in eine Datei geschrieben wird? In der Datei muss nur ein Wert hochgezählt werden. Es interessiert also nur, wann genau ein Thread fertig ist.
Dafür könnte ich in der while-Schleife folgendes machen:
Würdet ihr diese Vorgehensweise empfehlen? Statt dem System.out würde hier natürlich der Wert in der Datei geändert.
Oder soll ich jedem Thread das öffnen/schreiben in der Datei überlassen, nachdem die Haupt-Logik abgearbeitet wurde? Das Öffnen und schreiben sollte dann natürlich in einen synchronized-Block rein...
Wofür ich das brauche? Ich möchte eine einfache Fortschrittsanzeige über ein AJAX-Request realisieren.
Grüße
folgender Beispiel-Code:
Java:
ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(8);
for (int i = 0; i < 8; i++) {
Runnable worker = new PDFCreateWorker(i);
// Add to queue
executor.execute(worker);
}
while (!executor.isTerminated()) {
}
Funktioniert wunderbar.
Jetzt meine Frage:
Wie stelle ich am Besten an, dass der Abarbeitungsstand der einzelnen Threads in eine Datei geschrieben wird? In der Datei muss nur ein Wert hochgezählt werden. Es interessiert also nur, wann genau ein Thread fertig ist.
Dafür könnte ich in der while-Schleife folgendes machen:
Java:
long completeTmp = 0;
boolean show = true;
while (!executor.isTerminated()) {
if(show) {
System.out.println(executor.getCompletedTaskCount());
}
if(complete == completeTmp) {
show = false;
} else {
show = true;
completeTmp++;
}
}
Würdet ihr diese Vorgehensweise empfehlen? Statt dem System.out würde hier natürlich der Wert in der Datei geändert.
Oder soll ich jedem Thread das öffnen/schreiben in der Datei überlassen, nachdem die Haupt-Logik abgearbeitet wurde? Das Öffnen und schreiben sollte dann natürlich in einen synchronized-Block rein...
Wofür ich das brauche? Ich möchte eine einfache Fortschrittsanzeige über ein AJAX-Request realisieren.
Grüße