我有一个对象,其内部可变状态不断由一个或多个线程更新。对象是同步的,而我们的目标是定期从另一个线程保存(通过序列化)它的状态:Java。多线程环境中的对象序列化
public class Counter implements Serializable {
private int dogCount;
private int catCount;
public synchronized void updateFromDogThread(int count) {
dogCount = count;
}
public synchronized void updateFromCatThread(int count) {
catCount = count;
}
}
问题:
- 系列化是在这种情况下,安全吗?
- 它如何在引擎盖下工作?也就是说,
ObjectOutputStream
将执行序列化块,直到Counter
没有线程再运行为止? - 如果
Counter
的同步没有使用固有锁定,但是其他锁定会怎么样?