【发布时间】:2011-11-16 06:27:30
【问题描述】:
我目前有一个多线程程序,可以抓取网站并将其文本写入文件。 CPU 方面,我可以同时运行大量线程,但很快 I/O 就会成为瓶颈。我在想我可以让每个线程写入一个数组阻塞队列,但我知道我将生成超过可用的 32GB 内存。有没有办法在数组达到一定大小后将其转储到文本文件中,以便我可以释放该空间?还是有其他方法可以解决我遗漏的这个 I/O 问题?
【问题讨论】:
-
你不能只使用集合并序列化它吗?然后你只需交换你正在写入的对象。
-
我会创建一个线程,它是您对阵列的看门人。访问具有某些功能的数组。如果数组达到一定大小,则启动工作线程,将部分数组写入磁盘。只需使用一个线程,b/c 你的文件将是线性的(如果你保持简单的话),磁盘可能是你的瓶颈,而不是 CPU。
标签: java multithreading performance file-io