如何在java中只将一行从文本文件传递到不同的线程一次

时间:2014-02-21 19:30:14

标签: java multithreading file threadpool

我想创建一个FileProcessor,它将按顺序读取文件。这个类将由多个线程访问,每个线程将读取该行并在处理该行后将其存储在数据结构中。到目前为止,我已经想到了解决设计问题的步骤:

  1. 带有任务的类FileProcessor:将打开文件的方法getline。 BufferedReader将读取每一行并返回该行。

  2. 实现runnable的第二类FileThread。在run方法中,在FileProcessor对象上调用getline()。该线程还将处理该行并将其存储在数据结构中。

  3. 第3类将创建FileThreads的多个线程。

  4. 我知道这个设计有我能想象的错误。

    1. 每个线程如何知道是否已达到EOF以便它们停止。
    2. 文件处理器中的
    3. 应该正常读取文件,同时使用while循环检测EOF或者只是逐行读取并且让wao处理EOF条件。
    4. 请帮忙。

1 个答案:

答案 0 :(得分:1)

不,设计不好。

实例化Executor池,读取文件并完成工作的类是唯一需要了解EOF的类。接受他们的部分并完成工作的线程不必知道。

不要使用原始线程;利用像Excecutor这样的新并发类。