读取单个文件的Java多线程应用程序

chr*_*l89 2 java multithreading

我目前编写的程序使用32个线程并为每个线程读取1个文件(因此32个.txt文件).多线程与CPU速度无关,但是每秒对BING的api进行32次调用要快得多1.每个.txt文件都包含一个搜索查询列表.我创建一个线程,它从文件中一次读取一行.是否可以创建所有32个线程并将它们指向单个.txt文件?

Tom*_*icz 13

使用Producer-Consumer模式.只有一个线程可以读取文件,并使用每个行/命令将其推送到ArrayBlockingQueue(线程安全读写)put().

所有其他32个线程应通过调用从同一队列对象读取take().如果队列为空,它们将阻塞,这很好.

这个解决方案更好,因为磁盘本质上是单线程的,所以你不会通过同时读取文件来获得太多.