Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免文件操作中的并发操作(保存/删除)_Java_Concurrency_Locking - Fatal编程技术网

Java 如何避免文件操作中的并发操作(保存/删除)

Java 如何避免文件操作中的并发操作(保存/删除),java,concurrency,locking,Java,Concurrency,Locking,我遇到了一个问题,需要帮助 我正在设计一个简单的文件服务(Http),用户可以使用它上传/下载文件,以及删除文件服务器中的文件 文件服务将文件存储在单个linux计算机的父文件夹下(例如/data/fileserver/)。上载的文件(例如,xxx.mp4)可以使用计算机中的路径保存,如/data/fileserver/demo/1/xxx.mp4 问题是: 如何避免此文件服务中的并发操作(保存/删除) e、 g 用户A正在上载文件xxx.mp4,文件服务正在使用路径/data/fileserv

我遇到了一个问题,需要帮助

我正在设计一个简单的文件服务(Http),用户可以使用它上传/下载文件,以及删除文件服务器中的文件

文件服务将文件存储在单个linux计算机的父文件夹下(例如
/data/fileserver/
)。上载的文件(例如,
xxx.mp4
)可以使用计算机中的路径保存,如
/data/fileserver/demo/1/xxx.mp4

问题是: 如何避免此文件服务中的并发操作(保存/删除)

e、 g

用户A正在上载文件xxx.mp4,文件服务正在使用路径
/data/fileserver/demo/1/xxx.mp4
保存(尚未完成)

同时,用户B调用此文件服务的
删除api
,删除文件夹
/data/fileserver/demo
。此删除操作将影响用户A的保存操作

我希望在这种情况下,用户B的删除操作将失败

这个模型好像把树枝锁上了,但我不知道怎么处理

文件服务器基于java语言


谢谢。

因为HTTP可能是异步的,所以我会使用设计模式方法

例如,您可以实现一个处理确定路径上的操作的单例

假设您不希望在完成任何类型的操作之前对“fileserver”文件夹进行任何更改

实现一个映射,其中键为foldername,值为true或false(表示是否运行)


这似乎是一个简单的解决方案。

我明白了。它似乎需要处理映射中的父文件夹及其所有子文件夹。