我有一个 250Mb 的文件要读取。并且应用程序是多线程的。如果我允许所有线程读取文件,则会发生内存不足。 我遇到内存不足错误。
避免它。我只想在内存中保留一个字符串副本(从流中读取),并且我希望所有线程都使用它。
while (true) {
synchronized (buffer) {
num = is.read(buffer);
String str = new String(buffer, 0, num);
}
sendToPC(str);
}
基本上,当所有线程完成发送时,我只想拥有一个字符串副本,我想读取第二个字符串,依此类推。
最佳答案
为什么要多线程?您只有一个磁盘,而且它的运行速度也只能如此之快。几乎可以肯定,多线程它不会有帮助。任何依赖于将整个文件存储在内存中的软件设计从一开始就存在严重缺陷。
假设您定义了您的问题?
关于java - 多线程读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5165226/