Java - 多线程和文件问题

时间:2011-06-21 12:09:08

标签: java multithreading bufferedreader

我有一个文本文件,需要由两个线程读取,但我需要按顺序进行读取。示例:线程1获取锁定并读取第一行,锁定是空闲的。线程2获取锁定并读取第2行,因此继续。 我正在考虑共享相同的缓冲读取器或类似的东西,但我不太确定。 提前谢谢!

EDITED

将每个带有一个线程的2个类。这两个类将读取相同的文件。

2 个答案:

答案 0 :(得分:3)

你可以像你说的那样锁定BufferReader。

我会警告你,性能可能比仅使用一个线程更差。但是你可以把它做成一个练习。

答案 1 :(得分:1)

在一个线程中逐行读取文件并将结果输入行通过ConcurrentLinkedQueue等队列传递给线程池可能会更高效,如果您想保证至少为开始处理文件行。实现起来要简单得多,并且在用于读取文件的任何类上都没有争用。

除非你有需要为每个线程本地发生的读数,否则我会避免像这样分享文件。