Problem mit Stringausgabe

Status
Nicht offen für weitere Antworten.

Paristick

Mitglied
Hallo!

Ich habe mal eine Frage die mir schon länger Kopfschmerzen bereitet, und zwar habe ich ein Serverprogramm und ein Clientprogramm -> dabei soll es möglich sein mehrere Clientprogramme gleichzeitig offen zu haben. (das habe ich auch schon geschafft...)

jedoch soll im Serverprogramm ein Textausgabe in einer TextArea gemacht werden. Von jedem Client kommt alle 500 ms eine Meldung -> diese wird mittels Stringbuilder in einem String umgewandelt ->möchte ich jetzt beide Meldungen auf der TextArea ausgeben, sodass eine Liste entsteht (einmal eine Meldung von dem, dann wiederrum eine vom anderen Client)

zB.:

Client 1 - zustand = läuft
Client 2 - zustand = pausiert
Client 1 - zustand = läuft
usw.

so bekomme ich alle 500ms abwechselnd folgende ausgaben

client 1...
client 1...
client 1...
usw

abwechselnd mit

client 2...
client 2...
client 2...
usw.

Folgende Funktion wird dabei genutzt

zModel.setListString(stringBuilder.toString());

dieser wiederum wird dann beim View in der TextArea ausgegeben

Es ist mir klar, dass dieser String alle 500ms vom jeweils anderen Thread überschrieben wird, wie bekomme ich das aber so hin, dass ich immer eine Meldung abwechselnd von den Clients bekomme??

Brauche ich eine ArrayList?? Wenn ja welche Funktionen muss ich mit dieser verwenden??

Bitte um eure Hilfe!!

Paristick
 
anscheinend verwaltet jeder Client eine einzelne Liste/ StringBuilder mit seinen Meldungen,

gebraucht wird aber EINE zentrale Liste/ StringBuilder,
im einfachen Falle speichere diese in der Nähe der JTextArea, dass davon genau eine existiert scheint durch das angegebene Verhalten erwiesen,
also z.B. in der GUI-Klasse

ansonsten erstelle irgendein Controller-Objekt, welches alle Clients kennen,


nun müssen die Nachrichten in die gemeinsame Liste/ StringBuilder eingefügt werden,
wichtig ist dabei Synchronisierung,
idealerweise hast du in der Klasse, welche die Liste/ StringBuilder enthält, eine Methode

public snychronized void addNewStringAndUpdateTextArea(String newLine) {
// Liste/ StringBuider aktualisieren,
// TextArea-Text neu setzen
}


-----

die TextArea kann übrigens auch selber ihren Text merken, dann brauchst du kein separates Objekt,
jeden neuen Text nur per append an die TextArea anfügen,
das ganze am besten genauso in einer synchronized-Methode
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben