当前位置: 首页 > 知识库问答 >
问题:

Spring批次中的多Thread台阶

乐正涵意
2023-03-14

我试图理解“多线程步骤”,这是spring batch中实现并行处理、其他并行步骤和分区的方法之一。

>

在这种情况下,线程之间会共享Reader和Writer的单个实例吗?如果是,那么任何类级资源都不是线程安全的?

谢谢

共有1个答案

孙光临
2023-03-14

但是线程如何决定要读取哪些数据呢?

这是未定义的。项目将以不确定的顺序读取。这就是为什么当记录之间的读取顺序很重要时,使用多线程步骤不是一个好主意。

在这种情况下,线程之间会共享Reader和Writer的单个实例吗?如果是,那么任何类级资源都不是线程安全的?

是的,这些将在线程之间共享。每个读写器的javadoc都会提到读写器是否是线程安全的。

有关更多详细信息,请参阅参考文档的多线程步骤部分。

 类似资料:
  • 我们正在从Oracle DB迁移到Azure SQL Server,用于我们的Spring批处理应用程序。 我断断续续地得到以下错误 错误:01.03.2022:1458(40.269)[]main]命令行JobRunner:作业因错误而终止:创建名为“dateStoreList”的bean时出错:设置bean属性“jobRepository”时无法解析对bean“jobRepository”的引

  • Spring批处理作业与flatfileitemreader(从csv读取)、processor(更新adwords api提要详细信息,对于csv文件中的每个记录(大约有40条记录),这一步大约需要40秒)和正在更新DB中记录的定制writer一起使用。 web.xml

  • 你好 我是Spring Batch世界的新手,最后几天我花时间观看Michael Minella的YouTube视频,阅读一些文档并成功运行我在互联网上找到的一些演示项目。我认为Spring Batch是我们需求的热门候选者。但这是我们的故事。 我在一家公司工作,该公司在十多年前为他们的业务部门开发了自己的调度和批处理框架。该框架能够运行数据库存储程序、数据库函数和动态SQL。不用说,维护它非常具

  • 我们使用Spring Batch进行一些处理,通过Reader读取一些ID,我们希望通过处理器将它们处理为“块”,然后写入多个文件。但是处理器接口一次只允许处理一个项目,我们需要进行批量处理,因为处理器依赖于第三方,不能为每个项目调用服务。 我看到我们可以为“块”中涉及的所有读取器-处理器-写入器创建包装器,以处理列表<>并委托给一些具体的读取器/处理器/写入器。但这对我来说并不是件好事。像这样:

  • 我需要根据工作步骤1中的某些条件来决定下一步调用哪个步骤。 请注意:在步骤1中,我使用的是纯tasklet方法。例子: 请帮助,我如何在示例tasklet中放入一些代码或进行一些配置以决定调用的下一步? 我已经调查过https://docs.spring.io/spring-batch/reference/html/configureStep.html

  • 我使用的是spring批处理,和通常使用的一样,我有读取器、处理器和写入器。 我有两个问题 1>Reader查询所有200条记录(表中记录总大小为200,我给出了pageSize=200),因此它得到所有200条记录,在处理器中,我们需要所有这些记录的列表,因为我们必须将每个记录与其他199条记录进行比较,以便将它们分组在不同的层中。因此我在想,如果我们能在处理步骤中得到那个列表,我就可以操纵它们