Java 线程池,每个客户始终运行一个线程

问题描述 投票:0回答:1

用例: 我有 50 多个客户,每个客户的活动都记录在单独的 Excel 文件中。每 5 分钟就会将每个客户的新文件添加到共享文件系统位置。

应用程序启动时,我将启动一个线程来查询客户记录并为每个客户启动一个线程。客户详细信息存储在数据库表中。使用执行器服务线程池并为每个客户提交一个任务。

每个客户线程读取 Excel 文件并使用多线程并发处理 Excel 中的每一行。每个客户线程都会为 Excel 文件中的每一行生成一个线程。客户线程等待所有子线程完成后再退出。

我想在客户执行器服务线程池中实现以下功能,

  1. 为每个客户安排一个线程,这会为每个客户生成线程 excel 文件中的行并等待所有子线程完成。
  2. 每个客户在任何时间点只能运行一个线程
  3. 根据 Excel 中的条目数量,每次运行可能需要不同的时间。

我面临的主要挑战是,如何确保每个客户只运行一个客户线程。

谢谢

java multithreading executorservice
1个回答
0
投票

您必须使用针对递归操作进行优化的 ForkJoinPool API。 这将允许您在处理客户的主线程下递归调用多个线程。

通过使用前面的方法,您可以通过为每个客户同步创建线程来满足第 2 个要求。

© www.soinside.com 2019 - 2024. All rights reserved.