gpt4 book ai didi

java - 并发文件系统

转载 作者:行者123 更新时间:2023-11-29 09:46:37 25 4
gpt4 key购买 nike

我需要创建一个文件系统管理器(或多或少),它可以读取文件或将数据写入文件。

我的问题是如何处理并发?

我可以做类似的事情

public class FileSystemManager {

private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();

public byte[] read(String path) {
readWriteLock.readLock().lock();
try {
...
} finally {
readWriteLock.readLock().unlock();
}
}
public void write(String path, byte[] data) {
readWriteLock.writeLock().lock();
try {
...
} finally {
readWriteLock.writeLock().unlock();
}
}
}

但这意味着所有对写入(例如)的访问都将被锁定,即使第一次调用的目标是/tmp/file1.txt 而第二次调用的目标是/tmp/file2.txt。

有什么想法可以解决这个问题吗?

最佳答案

建议为并发而不是线程传递消息

通常,这种锁定发生在 java 级别之下。您真的打算读写相同的文件和目录吗?实现目录?

现在有很多不安全的线程代码,随着线程开始在多核硬件上真正一起运行,它们可能会开始崩溃。

我的建议是通过消息传递来管理并发。如果这是一项教育练习,您可以自己推出,或者使用那里的无数排队和消息系统之一。在这种系统中,您只有一个读写器进程,但可能有许多客户端。您无需进行文件和线程并发管理。

消息传递范例的一个优点是创建分布式负载平衡系统会容易得多。

关于java - 并发文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1391462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com