繁体   English   中英

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

[英]File reading using main thread and process data using multithreading and ExecutorService

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

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

  2. 此外,我需要在对数据库进行验证和授权后对每个记录输出进行处理。 如何跟踪每条记录的输出? 可以把它作为一个常见变量并增加故障记录数据的数量吗?

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

谢谢。

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

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

你的想法是正确的IMO,我会做类似的事情:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM