ReentrantLock クラスの実装を調べているときに、1 つの疑問が頭に浮かびました。ReentrantLock はシリアル化可能であり、ドキュメントでは、シリアル化されたときの状態に関係なく、シリアル化解除されたロックは常にロック解除されると記載されています。ロックとロック解除の状態は基本的に実行時の (ロックを保持している) スレッドに基づいており、これらのスレッドをデシリアライズしている間は利用できない可能性があるため、これは理にかなっています。
質問: ロックは基本状態 (ロック/ロック解除) を保存しないため、ロックを保持する必要があるのはなぜですか? 今のところ、それはロックの公平性のためであると推測できます。ただし、公平性は基盤となる OS に依存するため、あるプラットフォームでロックを保持し、別のプラットフォームでデシリアライズすると、(一度書き込みを行えばどこでも実行できる) 機能しない可能性があるため、公平性のためだけに保持しても意味がありません。
Java での Lock シリアライゼーションに関する私の混乱を明確に説明してください。