小编bob*_*bob的帖子

Java多线程读取单个大文件

什么是Java多线程应用程序的有效方法,其中许多线程必须读取完全相同的文件(大小> 1GB)并将其作为输入流公开?我注意到如果有很多线程(> 32),系统开始竞争I/O并且有很多I/O等待.

我已经考虑将文件加载到由所有线程共享的字节数组中 - 每个线程都会创建一个ByteArrayInputStream,但是分配1GB字节数组将无法正常工作.

我还考虑使用单个FileChannel,每个线程使用Channels.newInputStream()在其上创建一个InputStream,但似乎FileChannel维护InputStream的状态.

java io concurrency

7
推荐指数
2
解决办法
7461
查看次数

标签 统计

concurrency ×1

io ×1

java ×1