【发布时间】:2019-02-06 00:19:02
【问题描述】:
我遇到了一个问题,需要帮助。
我正在设计一个简单的文件服务(Http),用户可以通过它上传/下载文件,以及删除文件服务器中的文件。
文件服务将文件存储在单个 linux 计算机的父文件夹下(例如/data/fileserver/)。上传的文件(例如xxx.mp4)可以保存在计算机中的路径,如/data/fileserver/demo/1/xxx.mp4。
问题是: 如何避免此文件服务中的并发操作(保存/删除)?
例如
用户 A 正在上传文件 xxx.mp4,文件服务正在使用路径 /data/fileserver/demo/1/xxx.mp4 保存(尚未完成)。
同时,用户B调用该文件服务的delete api删除文件夹/data/fileserver/demo。这个删除操作会影响用户A的保存操作。
我希望在这种情况下用户 B 的删除操作会失败。
模型好像锁了树枝,但是不知道怎么处理。
文件服务器基于java语言。
谢谢。
【问题讨论】:
标签: java concurrency locking