当前位置: 首页 > 面试题库 >

以一定速度在Java中读取文件

赵才俊
2023-03-14
问题内容

是否存在有关如何以一定速率读取长文件的文章/算法?

说我不想在发出读取数据时以每秒10 KB的速度通过。


问题答案:

粗略的解决方案是一次读取一个块,然后休眠,例如10k,然后休眠一秒钟。但是我要问的第一个问题是:为什么?有两个可能的答案:

  1. 您不希望创建工作比完成任务快。要么
  2. 您不想在系统上造成太大的负担。

我的建议是不要在读取级别上对其进行控制。这有点混乱和不准确。而是在工作结束时对其进行控制。Java有很多出色的并发工具可以解决这一问题。有几种替代方法可以做到这一点。

我倾向于喜欢使用生产者消费者模式来解决此类问题。它为您提供了具有报告线程等功能来监视进度的绝佳选择,并且它可能是一个非常干净的解决方案。

诸如ArrayBlockingQueue之类的东西可以用于(1)和(2)所需的限制类型。由于容量有限,读取器最终将在队列已满时阻塞,因此不会很快填满。可以控制工人(消费者)仅工作得如此之快,从而也限制了覆盖率(2)。



 类似资料:
  • 问题内容: 可以说我在一个文件夹中有三个文件:file9.txt,file10.txt和file11.txt,我想按此特定顺序读取它们。谁能帮我这个? 现在我正在使用代码 它先读取file10.txt,然后读取file11.txt,然后读取file9.txt。 有人可以帮助我如何获得正确的订单吗? 问题答案: 文件系统上的文件未排序。您可以使用函数自己对生成的文件名进行排序: 请注意,您代码中的调

  • 与malloc'相同大小的内存和手动读取整个文件到malloc'区域相比,这有什么不同?

  • 问题内容: 我有一个2 GB的文件(),其中文件中的每一行都是一个单词,就像: 我需要编写一个程序来读取文件中的每个单词并打印单词计数。我使用Java和C 编写它,但结果令人惊讶:Java运行速度是C 的2.3倍。我的代码如下: C ++: 输出: Java: 输出: 在这种情况下,为什么Java比C 快?如何提高C 的性能? 问题答案: 您不是在比较同一件事。Java程序读取行,以换行符开头,而

  • 我正试图编写一个程序,读取网络中相互交互的节点列表。它以以下格式写入文本文件: 这表示节点1与节点2和节点3交互,节点2仅与节点3交互,等等。 该程序将能够读取该文件,并将删除任何重复的交互,并且如果我输入节点的名称,将能够向我返回节点与其他节点的交互次数。然而,我对Java非常陌生,我首先尝试让它读入文件,尽管我的代码目前没有读入文件。以下是我迄今为止的代码: 任何关于如何解决此问题的帮助都将不

  • 当我运行下面的代码时,我有一个大文件(大约3GB)并读入ArrayList,几分钟后代码运行非常慢,CPU使用率很高。几分钟后,eclipse控制台显示错误java。lang.OutOfMemoryError:超出GC开销限制。 操作系统:windows2008R2, 日食伊尼 java代码: 我的用例:

  • 问题内容: 我有一些代码可以从文件中读取行,我想识别行何时开始或fisrt字符(非空白)为’ ‘并忽略它,因此在while语句中添加如下内容 我有类似的东西: 如何完成代码? 问题答案: