java object serialization - thread safe?
I am writing highly concurrent application, which is extensively modifies objects of MyClass. The class is composed of several fields. My question is how to prevent modifications of particular obj开发者_开发问答ect during its serialization by another thread?
Regards, Matt
By synchronizing both the methods which serialize and modify the object state.
Why modify MyClass? A better approach (and much easier to deal with concurrently) is to create new immutable versions of your state object and CAS them with an AtomicReference when updating. Eg:
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);}
}
Then serialization is not a problem as you are dealing with an immutable object. Your stored reference can only change from one valid state to another, and multiple updates can be performed atomically.
精彩评论