锁解惑(持续更新…)

38 阅读1分钟

如何实现文件加锁

Java通过java.nio.channels.FileLock提供跨平台的文件加锁支持,底层依赖操作系统原生接口。

Windows系统文件锁接口有LockFileEx()等,Linux系统文件锁接口有fcntl()、flock()等,控制多进程对同一文件的访问。

网络文件系统的锁支持可能不可靠

  • 网络环境存在延迟、抖动的情况
  • 文件服务器宕机,导致客户端文件加锁操作异常、锁状态不一致
  • 对POSIX文件锁定语义支持不完整

建议使用独立于网络文件系统的分布式锁服务(比如Redis)。