我应该设计一个组件,它应该通过在Java中使用multiThreading来实现以下任务,因为文件很大/很多,任务必须在很短的时间内完成:
我是多线程的新手。对Spring Batch进行一些研究,以便将它用于上述任务。
请告诉我您在Java或Spring Batch中使用传统多线程的建议。这里的输入源是多个,输出源也是多个。
答案 0 :(得分:4)
我建议从框架中选择一些内容,而不是自己编写完整的线程部分。我已经成功地使用Sping's tasks and scheduling进行了计划任务,包括从数据库中获取数据,进行一些处理,发送电子邮件,将数据写回数据库)。
答案 1 :(得分:2)
Spring Batch是实现您的要求的理想选择。首先,您可以使用内置的读取器和编写器来简化您的实现 - 非常好的支持解析CSV文件,XML文件,通过JDBC等从数据库读取。您还可以获得诸如在发生故障时重试等功能的好处,跳过无效的输入,如果中间出现故障则重新启动整个作业 - 框架将跟踪状态&从它停止的地方重新开始。自己实现这一切非常复杂,做得好需要付出很多努力。
使用spring批处理实现批处理作业后,它为您提供了简单的并行化方法。一个步骤可以在多个线程中运行 - 它主要是配置更改。如果您要执行多个步骤,也可以配置它。如果需要,还支持在多台机器上分配处理。实现并行性的大部分工作都是由Spring Batch完成的。
我强烈建议您使用Spring Batch对几个最复杂的场景进行原型设计。如果能够解决问题,您可以继续使用Spring Batch。特别是当您不熟悉多线程时,自己实现它是一个确定的灾难方法。