java - 多线程读取文件

标签 java multithreading memory query-optimization

我有一个 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/

相关文章:

java - 将字符串 Mac 地址转换为十六进制

java - 将 .class 文件添加到 NetBeans 中的项目

java - 当我们使用自己的线程池时,netty可以线程安全吗?如果netty可以,为什么?

c++ - 从 C++ 代码中的 C 回调诊断内存损坏

c - 在聊天中实现彼得森算法

c++ - 获取 Win32 系统上的最大可寻址内存空间

java - EJB 3.1 - 为什么无状态 bean 必须通过其接口(interface)注入(inject)(如果有的话)?

java - 持久性单元被覆盖

python - 如何从线程队列Python内部停止线程

multithreading - 通过带有持续时间的线程使用同步计时器