Java并发,读取文件创建对象并存储它们

时间:2013-07-22 09:34:55

标签: java file-io concurrency

我目前正在使用java.nio来读取文件(使用Files.readAllLines)然后传递每一行来创建一个对象[new Object(line)],并将该对象添加到一个集合中。 / p>

每个文件的解析方式都不同,因此有3种类型的对象,其中2种被添加到地图中,它们应该先完成,因为它们第三次添加到一个集合并被添加到前两个映射中的变量中[使用类似的东西:

get(var).x.add(Object)].

我真的不明白如何同时编写代码并且无法找到与此相关的任何内容但我想可以使用并发来创建前两个集合或者在所有三个集合中使用它并且最后完成最后一个集合(或者让它等待,如果尚未设置它需要编辑的变量,则稍后再做)。

任何帮助都将受到赞赏,如果您需要澄清我正在寻找的东西,请询问。

2 个答案:

答案 0 :(得分:0)

所以你有3个文件,其中2个要放入地图,最后一个文件用于添加地图的某个值,对吗?

您可以为两个文件中的每一个创建线程并将数据放入地图中。这里重要的是您必须使用并发数据结构,如ConcurrentHashMap或同步映射。

答案 1 :(得分:0)

我会使用以下全局步骤同时执行此操作:

  1. 创建一个特定大小的线程池:Executors. newFixedThreadPool(someSize)
  2. 创建三个并发/同步集。每种对象类型一个:Collections.synchronizedSet(new HashSet<YourObjectType>());
  3. 使用线程池处理在适当时添加到同步集的所有文件
  4. 当处理完所有文件后,第一个列表/集合具有初始对象,然后遍历最后一个集合,其中包含需要添加到前两个集合的实例中的值。如果此列表非常大,您可以将其拆分并同时执行此操作。