是否可以为Serializable类进行锁定瞬态?

时间:2013-03-26 14:00:03

标签: java serialization concurrency locking

我有一个实现Serializable的类,我通过一个类型为Object lock 对象来保护这个类的不变量。是否可以使其瞬态或者它是否有任何不必要的副作用?

代码:

class MyClass implements Serializable{

 private final transient lock = new Object();
  ....
}

2 个答案:

答案 0 :(得分:6)

另一种方法是使用空数组(偶数new Object[0])。 空数组是可序列化的,而new Object()则不是。

我习惯了:

private final Object lock = new Object[0];

答案 1 :(得分:2)

这很好,只要你recreate the object upon de-serialization,就可以进行同步了。

此外,您可能需要remove the final modifier

由你来决定这是否值得麻烦。