0

我需要使用多线程读取批量数据文件并处理数据(如数据验证、跟踪验证失败和插入数据库等)。我想使用主线程从文件中读取数据并使用ExecutorService.

  1. 这是正确的方法吗?如果是,我该怎么做?

  2. 此外,一旦对数据库进行验证和插入,我需要跟踪每条记录输出。如何跟踪每条记录的输出?可以把它放在一个公共变量上并增加故障记录数据的数量吗?

  3. 我还需要跟踪有多少记录顺序失败?

谢谢。

4

3 回答 3

2

我建议将文件拆分为虚拟段,并允许您的执行者选择和处理这些段。在主线程中读取文件最终会造成瓶颈。允许每个线程分别并行读取其段。请参阅以下帖子如何在Java中实现对映射到内存的文件的并发读取?

于 2012-05-25T09:31:39.290 回答
0

是的,它是正确的,但是如果处理需要大量时间(与读取文件相比),处理片段是独立的并且您有多个内核,您将会得到改进。将您的数据读取到任何容器(如果它适合 RAM)并使用任何 ExecService 教程,如下所示:http ://tutorials.jenkov.com/java-util-concurrent/executorservice.html

于 2012-05-25T09:23:32.930 回答
0

你的想法是正确的IMO,我会做这样的事情:

while ((line = filereader.readLine()) != null) {
    Mycallable mycallable = new Mycallable(line);
    executor.submit(mycallable);
            }
于 2012-05-25T09:24:01.623 回答