Java 使用主线程读取文件,使用多线程和ExecutorService处理数据

Java 使用主线程读取文件,使用多线程和ExecutorService处理数据,java,multithreading,Java,Multithreading,我需要读取批量数据文件并使用多线程处理数据(如数据验证、跟踪验证失败和插入数据库等)。我想使用主线程从文件中读取数据,并使用ExecutorService处理数据 这是正确的方法吗?如果是,我怎么做 此外,我还需要将每一个记录输出跟踪到数据库中,一旦验证和插入完成。如何跟踪每条记录的输出?可以将其设置为一个公共变量并增加故障记录数据的计数吗 我还需要跟踪有多少条记录顺序失败 谢谢。是的,这是正确的,但如果处理需要花费大量时间(与读取文件相比),工件的处理是独立的,并且您有多个核,您将有一个改进。

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

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

  • 此外,我还需要将每一个记录输出跟踪到数据库中,一旦验证和插入完成。如何跟踪每条记录的输出?可以将其设置为一个公共变量并增加故障记录数据的计数吗

  • 我还需要跟踪有多少条记录顺序失败


  • 谢谢。

    是的,这是正确的,但如果处理需要花费大量时间(与读取文件相比),工件的处理是独立的,并且您有多个核,您将有一个改进。
    将您的数据读取到任何容器(如果它适合RAM)中,并使用以下任何ExecService教程:

    您的想法是正确的,我会这样做:

    while ((line = filereader.readLine()) != null) {
        Mycallable mycallable = new Mycallable(line);
        executor.submit(mycallable);
                }
    

    我建议将文件拆分为虚拟段,并允许您的执行者选择和处理这些段。在主线程中读取文件最终会造成瓶颈。允许每个线程分别并行地读取其段。请参阅以下帖子

    您的瓶颈可能是数据库,因此我将首先批处理数据,因为这更有可能提高性能(并且相对简单)。对于多线程示例,我将在google上进行快速搜索。;)