gpt4 book ai didi

java io读写锁

转载 作者:行者123 更新时间:2023-11-30 06:38:50 25 4
gpt4 key购买 nike

假设我有一个文件可能由一个线程/进程写入器写入并由另一个线程/进程读取器读取。Writer 每 x 个时间间隔更新一次文件,Reader 每 y 个时间间隔读取一次,如果他们碰巧同时读写文件,会不会有什么问题?读取会阻塞直到写入完成吗?还是读取失败?反之亦然?这里的最佳做法是什么?

最佳答案

您需要设计自己的锁定协议(protocol)以在应用程序中实现。具体取决于底层操作系统,但一般来说,没有什么可以阻止一个进程读取文件,即使另一个进程正在写入文件也是如此。

Java 有一个 FileLock可用于协调对文件的访问的类。但是,您需要仔细阅读注意事项,尤其是与此功能的系统依赖性相关的注意事项。在目标操作系统上测试该功能非常重要。

Java 的 FileLock 的一个关键概念是它只是“建议”。您的进程应该能够检测到另一个进程持有对文件的锁定,但您的进程可以忽略它并对该文件执行它喜欢的操作,没有任何限制。

这个问题是模棱两可的,是多个进程将使用该文件,还是仅仅在单个 Java 进程中分离线程。这是一个很大的区别。如果问题只需要单个进程中的线程安全,则 ReentrantReadWriteLock可以提供一个健壮的、高性能的解决方案,没有任何特定于平台的陷阱。

关于java io读写锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1811634/

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