【问题标题】:How to clone or copy a BufferedReader?如何克隆或复制 BufferedReader?
【发布时间】:2015-05-21 14:59:25
【问题描述】:

我正在创建一个 Android 应用程序,它将读取非常大的文件,大约有 1.000 到 40.000 行,单个循环需要相当长的时间。因此,我试图创建一个多线程读取器,它创建多个线程,每个线程读取文件的特定部分,然后将所有小部分放在一个大数组或String中。

我正在使用 BufferedReader 循环遍历文件中的每一行,并存储行数。
每次循环运行时,我都会检查lineNumber % LINES_PER_READER == 0 是否为真。如果是,我创建一个新的阅读器线程,它应该读取文件中接下来的LINES_PER_THREAD-number of lines。

我想知道(因为文件可能很大)我是否可以以任何方式复制或克隆BufferedReader,以便新的阅读器线程可以从创建它的行开始阅读,因为我已经有一个正在读取该行的循环,而不是创建一个新的BufferedReader,而是读取每一行,直到我到达指定的行,然后开始读取实际值。

【问题讨论】:

标签: java android multithreading bufferedreader


【解决方案1】:

不要克隆 BufferedReader。它会制造麻烦。只需将成批的行发送到各个处理线程即可。

【讨论】:

  • 我会试试这个。问题可能是 IO 带宽。那么,这可能行不通……
  • 如果 IO 带宽是问题,这无济于事,但伤害不大。拥有多个 BufferedReader 会造成更大的伤害。
  • 如果是 IO 带宽问题,您还有其他建议吗?
  • 不,如果 IO 带宽是问题,您能做的最好的事情就是确保您按顺序读取文件不超过一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
  • 2011-08-08
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
相关资源
最近更新 更多