Ich habe eine Klasse "A", die "runnable" ist und ich mache neue Objekte aus Java-Unmarshaller. Der MainGUI-Thread versucht, auf diese Instanzen mit einem get() zuzugreifen, der bereits in der Klasse "A" ist. Die Instanzen, die ich in Klasse A erstellt habe, habe ich statisch gemacht, damit sie für immer verfügbar sind. Aber wenn ich eine neue vollständige Instanz mit anderen Eigenschaften erhalte, muss ich die neue Instanz mit den vorherigen vergleichen und behalten der Neue.Die beste Methode, um Objekte zwischen Klassen in verschiedenen Threads zu übergeben?
Gibt es einen besseren Weg oder ein besseres Design für dieses Problem?
Wie bekomme ich die Instanzen der Klasse "A", die zur Laufzeit erstellt werden, ohne sie statisch zu machen?
Beispielcode:
public class SOAPMessagesFactory {
private static GetCameraImageResponse getCameraImageResponse;
// process here the msgs in another thread, not shown here in that snipped
if (messageTag.equalsIgnoreCase("GetCameraImageResponse")) {
try {
JAXBElement<GetCameraImageResponse> cameraImageResponse = unmarshaller.unmarshal(SoapBodyReader, GetCameraImageResponse.class);
getCameraImageResponse = cameraImageResponse.getValue();
} catch (Throwable ex) {
ex.printStackTrace();
}
}
public GetCameraImageResponse getCameraImageResponse() {
if (getCameraImageResponse != null) {
return getCameraImageResponse;
} else {
return null;
}
}
// in main gui
public void UpdateGUI() {
GetCameraImageResponse cameraImageResponse = messageFactory.getCameraImageResponse();
}
Was meinst du mit 'vorherige eine Daten und die neue '? Ersetzen Sie die Instanz? –
OP bedeutet, dass er den Status des letzten Objekts (zum Vergleich) behalten möchte und auch einen neuen – Freak
können Sie Code-Schnipsel bereitstellen? –