[英]File reading using main thread and process data using multithreading and ExecutorService
我需要使用多线程读取批量数据文件并处理数据(如数据验证,跟踪验证失败和插入数据库等)。 我想使用主线程从文件中读取数据并使用ExecutorService
处理数据。
这是正确的方法吗? 如果是的话,我该怎么做?
此外,我需要在对数据库进行验证和授权后对每个记录输出进行处理。 如何跟踪每条记录的输出? 可以把它作为一个常见变量并增加故障记录数据的数量吗?
此外,我需要跟踪有多少记录顺序失败?
谢谢。
我建议将文件拆分为虚拟段,并允许执行者选择和处理这些段。 在主线程中读取文件最终会产生瓶颈。 允许每个线程分别并行地读取其段。 请参阅以下文章如何实现对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.