2

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

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

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

我真的不明白如何同时编码,并且很难找到与此接近的任何东西,但我想可以使用并发来创建前两个集合或在所有三个集合中使用它并最后做最后一批(或得到如果尚未设置需要编辑的变量,它会等待并稍后执行)。

任何帮助将不胜感激,如果您需要对我正在寻找的内容进行任何澄清,请询问。

4

2 回答 2

0

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

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

于 2013-10-08T10:12:34.353 回答
0

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

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