【发布时间】: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,而是读取每一行,直到我到达指定的行,然后开始读取实际值。
【问题讨论】:
-
旁注:您确定瓶颈是处理时间而不是 IO 带宽吗?
标签: java android multithreading bufferedreader