Hallo,
ich schreibe zur Zeit eine kleine Swing Anwendung mit einem JFrame.
Dieses Frame beinhaltet eine JTabPane mit 5 Tabs. Jedes Tab enthält zwei JTextAreas.
Dann erzeuge ich mehrere sehr rechenaufwendige Threads die alle in die verscheidenen
JTextAreas hineinschreiben.
Die Methode die die Strings zum schreiben entgegen nimmt sieht etwa so aus und befindet sich direkt im
JFrame.
Jetzt zu meinen Problem:
Die Oberfläche lässt sich, sobald die Threads gestartet sind nur sehr langsam bedienen und hängt sich auch gelegentlich mal komplett auf. Es sind zwar viele Threads aber hiervon werden nur max. 5 gleichtzeitig ausgeführt.
Das sieht etwa so aus:
Jetzt meine Frage. Wie bekomme ich das hin das die Oberfläche sich flüssig bedienen lässt trotz das diese 5 Threads unterschiedlich in die Gui schreiben?
Danke schonmal für euere Hilfe.
ich schreibe zur Zeit eine kleine Swing Anwendung mit einem JFrame.
Dieses Frame beinhaltet eine JTabPane mit 5 Tabs. Jedes Tab enthält zwei JTextAreas.
Dann erzeuge ich mehrere sehr rechenaufwendige Threads die alle in die verscheidenen
JTextAreas hineinschreiben.
Die Methode die die Strings zum schreiben entgegen nimmt sieht etwa so aus und befindet sich direkt im
JFrame.
Code:
private void writeText(final String txtToAppendm, final int tabnumber, final boolean append)
throws Exception {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
mItemSaveLog.setEnabled(true);
if (tabnumber >= txtCenter.length)
try {
throw new Exception("Tab not found!");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (append) {
txtCenter[tabnumber].append("\n" + txtToAppendm);
if (txtToAppendm.indexOf("BlaBla") != -1)
txtSouth[tabnumber].append("\n" + txtToAppendm);
} else {
txtCenter[tabnumber].setText(txtToAppendm);
if (txtToAppendm.indexOf("BlaBla") != -1
|| txtToAppendm.equals(""))
txtSouth[tabnumber].setText(txtToAppendm);
}
scrollAllToEnd();
}
});
}
Jetzt zu meinen Problem:
Die Oberfläche lässt sich, sobald die Threads gestartet sind nur sehr langsam bedienen und hängt sich auch gelegentlich mal komplett auf. Es sind zwar viele Threads aber hiervon werden nur max. 5 gleichtzeitig ausgeführt.
Das sieht etwa so aus:
Code:
for (int i = 0; i < files.length; i++) {
threadExecutor.execute(new AufwendigerThread(files[i],
tabnumber));
tabnumber++;
if (tabnumber >= txtCenter.length)
tabnumber = 0;
}
threadExecutor.shutdown();
Jetzt meine Frage. Wie bekomme ich das hin das die Oberfläche sich flüssig bedienen lässt trotz das diese 5 Threads unterschiedlich in die Gui schreiben?
Danke schonmal für euere Hilfe.