5

「実行可能な」クラス「A」があり、Java アンマーシャラーから新しいオブジェクトを作成します。MainGUI スレッドは、既にクラス "A" にある get() によってこれらのインスタンスにアクセスしようとします。クラス A で作成したインスタンスを静的に作成して、永久に使用できるようにしましたが、プロパティが異なる新しい完全なインスタンスを取得するときの問題は、新しいインスタンスを以前の 1 つのデータと比較して保持する必要があることです。新しい方。

その問題に対するより良い方法や設計はありますか?

静的にせずに実行時に作成されるクラス「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();

}
4

2 に答える 2

3

Producer-Consumerパターンを試してください。

于 2013-04-15T11:24:30.117 に答える
0

メインでタイプ「A」の参照を宣言し、それを他のスレッドに渡すことができます。他のスレッドで操作を実行し、A の新しいインスタンスを参照に割り当てます。このようなもの

A aVariable;
Thread t = new Thread(new MyThread(aVariable));
t.start();
t.join();
populateGUI(aVariable);
于 2013-04-15T11:22:41.217 に答える