开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜