我有一个文本文件,需要由两个线程读取,但我需要按顺序进行读取。示例:线程1获取锁定并读取第一行,锁定是空闲的。线程2获取锁定并读取第2行,因此继续。 我正在考虑共享相同的缓冲读取器或类似的东西,但我不太确定。 提前谢谢!
EDITED
将每个带有一个线程的2个类。这两个类将读取相同的文件。
答案 0 :(得分:3)
你可以像你说的那样锁定BufferReader。
我会警告你,性能可能比仅使用一个线程更差。但是你可以把它做成一个练习。
答案 1 :(得分:1)
在一个线程中逐行读取文件并将结果输入行通过ConcurrentLinkedQueue等队列传递给线程池可能会更高效,如果您想保证至少为开始处理文件行。实现起来要简单得多,并且在用于读取文件的任何类上都没有争用。
除非你有需要为每个线程本地发生的读数,否则我会避免像这样分享文件。