【发布时间】:2013-08-01 11:42:34
【问题描述】:
在研究 ReentrantLock 类的实现时,我想到了一个问题。 ReentrantLock 是可序列化的,并且在文档中它说任何反序列化的锁始终处于解锁状态,而与序列化时的状态无关。这是有道理的,因为状态 Lock 和 unlock 基本上基于运行时的线程(持有锁),而我们反序列化时这些线程可能不可用。
问题是:为什么我们需要 Lock 持久化,因为它不存储它的基本状态(锁定/解锁)?现在我可以假设这可能是为了锁的公平性。但是公平性再次取决于底层操作系统,所以如果我们在一个平台上保持锁并在另一个平台上反序列化,因为(一次编写并在任何地方运行)它可能不起作用,所以仅仅为了公平而坚持没有意义。
希望我清楚地说明我对 Java 中的锁序列化的困惑。
【问题讨论】:
标签: serialization deserialization