java - 在不同线程的类之间传递对象的最佳方式?

标签 java

我有一个“可运行”类“A”,我用 Java 解码器创建新对象。 MainGUI 线程尝试通过已经在类“A”中的 get() 访问这些实例。我在 A 类创建的实例,我将它们设为静态,以便它们永远可用,但是当我得到一个具有不同属性的新的完整实例时出现问题,我必须将新实例与前一个实例的数据进行比较并保留新的那一个。

是否有更好的方法或设计来解决该问题?

如何获取在运行时创建的类“A”的实例而不使它们成为静态的?

示例代码:

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

}

最佳答案

试试Producer-Consumer模式。

关于java - 在不同线程的类之间传递对象的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16013791/

相关文章:

java - 如何验证父类的 super.method() 的调用?

java - Hibernate拦截器线程安全

java - 错误 Java 异常 java.lang.IllegalThreadStateException

java - 创建 JSONArray 数组时出现空指针异常

java - JPA 在 Spring 中到底是如何工作的?一些疑问

java - 我什么时候想在实际类上声明接口(interface)?

java - 两个java对象的不同哈希码但相同的结果

java - 双属性上的比较器排序无法满足其一般契约

java - 使用 Selenium 和 Chrome 开发工具的浏览器内存泄漏自动化

java - 避免在 Jackson 中运行时序列化某些字段