Perché modificare MyClass? Un approccio migliore (e molto più facile da gestire contemporaneamente) consiste nel creare nuove versioni immutabili del tuo oggetto stato e convertirle in un AtomicReference durante l'aggiornamento. Ad esempio:
final class MyClass {
final int age;
final String name;
final String address;
MyClass(int age, String name, String address) {…}
MyClass setNameAndAddress(String name, String address) {return new MyClass(age, name, address);}
}
Quindi la serializzazione non è un problema in quanto si tratta di un oggetto immutabile. Il riferimento memorizzato può solo cambiare da uno stato valido a un altro e più aggiornamenti possono essere eseguiti atomicamente.
fonte
2010-10-25 01:02:01
comprese le modifiche allo stato di qualsiasi oggetto secondario (contenuto nei campi dell'oggetto). – Thilo
Mentre la sincronizzazione risolve il problema relativo alla sicurezza dei thread, lo fa serializzando tutti gli accessi, quindi l'applicazione è fondamentalmente a thread singolo e non concorrente. –