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

问题描述

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

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

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

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

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

解决方法

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

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

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”