2013-04-15 21 views
5

"runnable" olan bir "A" sınıfı var ve Java unmarshallers'den yeni nesneler yapıyorum. MainGUI iş parçacığı, bu örneklere zaten "A" sınıfında olan get() tarafından erişmeye çalışır. Sınıf A'da oluşturduğum örnekler, onları kalıcı hale getirdim, böylece sonsuza kadar kullanılabilirlerdi, ancak farklı özelliklere sahip yeni bir tam örnek aldığımda problem, yeni örneği bir önceki verilerle karşılaştırmalı ve yeni olan.Nesneleri farklı iş parçacıklarının arasında geçirmenin en iyi yolu?

Bu sorun için daha iyi bir yol veya tasarım var mı?

Çalışma zamanında oluşturulmuş "A" sınıfı örneklerini statik yapmadan nasıl edinebilirim?

Örnek Kod:

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

} 
+0

Birinin önceki verileriyle ne demek istiyorsun ve yenisini saklıyorsun? Örneği değiştiriyor musunuz? –

+0

OP, son nesnenin durumunu (karşılaştırmak için) ve yeni bir tane de – Freak

+0

kod snippet'leri sağlamanız anlamına mı geliyor? –

cevap

0

Ana tip "A" nin bir başvuru beyan ve diğer iplik o geçebileceği. Diğer iş parçacığında işlemleri gerçekleştirin ve yeni A örneğini referansa atayın. Bu

A aVariable; 
Thread t = new Thread(new MyThread(aVariable)); 
t.start(); 
t.join(); 
populateGUI(aVariable); 
İlgili konular