Java – the best way to pass objects between classes in different threads?

I have a "runnable" class "a" and I use Java unmarshallers to create new objects The maingui thread attempts to access these instances through get() already in class "a" For the instances I create in class A, I set them to be static so that they are always available. However, when I get a new complete instance with different properties, I must compare the new instance with the previous data and keep the new one unchanged

Is there a better way or design to solve this problem?

How do I get an instance of class "a" created at run time without making it static?

Example code:

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();

}

Solution

Try producer consumer mode

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>