gpt4 book ai didi

java - 通过多线程访问文件

转载 作者:太空狗 更新时间:2023-10-29 22:49:30 29 4
gpt4 key购买 nike

我想通过 10 个线程访问一个大文件(文件大小可能从 30 MB 到 1 GB 不等),然后处理文件中的每一行并通过 10 个线程将它们写入另一个文件。如果我只使用一个线程访问 IO,其他线程将被阻塞。处理需要一些时间,几乎相当于从文件系统中读取一行代码。还有一个约束,输出文件中的数据应该与输入文件中的数据顺序相同。

我想听听您对这个系统设计的看法。是否有任何现有的 API 支持并发访问文件?

同时写入同一个文件可能会导致死锁。

如果我担心时间限制,请建议如何实现这一目标。

最佳答案

我将从三个线程开始。

  1. 读取数据的读取器线程,将其分成“行”并将它们放入有界阻塞队列 (Q1),
  2. 一个处理线程从 Q1 读取,进行处理并将它们放入第二个有界阻塞队列 (Q2) 中,并且
  3. 从 Q2 读取并写入磁盘的写入器线程。

当然,我也会确保输出文件与输入文件位于物理上不同的磁盘上。

如果处理往往比 I/O(监控队列大小)慢,那么您可以开始试验两个或多个并行“处理器”,它们在读取和读取的方式上是同步的写入他们的数据。

关于java - 通过多线程访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17637176/

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