<!-- Reader bean for our simple Text file -->
<bean id="productReader" class="com.mycompany.batching.reader.productItemReader"
scope="step">
<property name="userId" value="#{jobParameters['userId']}" />
<property name="dataId" value="#{jobParameters['dataId']}" />
</bean>
<!-- Processor for the data red from text file -->
<bean id="productProcessor" class="com.mycompany.batching.processor.productItemProcessor">
</bean>
<!-- Persisting data to database -->
<bean id="productWriter" class="com.mycompany.batching.writer.productItemWriter">
</bean>
<batch:job id="simpleProductImportJob" xmlns="http://www.springframework.org/schema/batch">
<batch:step id="importFileStep">
<batch:tasklet>
<batch:chunk reader="productReader" processor="productProcessor"
writer="productWriter" commit-interval="1" />
</batch:tasklet>
</batch:step>
</batch:job>
如何使这个多线程。?
实现这一目标的最佳方法是分步分区。假设您的源是一个文件,1。根据某些逻辑拆分文件2。分区器将挑选文件并将每个文件分配给从机。
batch-context.xml
<batch:step id="fileProcessMaster">
<batch:partition partitioner="filePartioner" step="readAndInsertToDb">
<batch:handler task-executor="taskExecutor" />
</batch:partition>
</batch:step>
filePartitioner.java
public class FilePartitioner implements Partitioner{
@Override
public Map<String, ExecutionContext> partition(int gridSize) {
Map<String, ExecutionContext> map = new HashMap<String, ExecutionContext>();
int i = 0;
File[] files = new File(inboundDirectory).listFiles((FileFilter) new PrefixFileFilter(*);
for (File file : files) {
//Pick only those files which are splitted
if (file.getName().contains("Split")) {
ExecutionContext context = new ExecutionContext();
context.putString("file", file.getAbsolutePath());
map.put("slave" + i, context);
i++;
}
}
return map;
}
我想用3个步骤建立一个批次。我想配置这个步骤,就像如果有100条记录,当step1读取、处理和写入一个10块时,step02,然后step03开始和结束,然后再次返回step1,读取下一个块。这在Spring批量可能吗?
问题内容: Java如何确定分配线程或进程的内核?有什么办法可以控制吗?防止两个大线程在同一内核上执行? 基本上,我要问的是有关Java中多线程如何工作或如何在Java中控制它的更多信息。 问题答案: 您不能为特定线程设置处理器关联。但是,如果将程序分为两个进程,则应该能够将这些进程分配给操作系统级别的特定处理器。 http://www.cyberciti.biz/tips/setting-pro
我正在尝试使用多个处理器类在处理器步骤中处理记录。这些类可以并行工作。目前我已经编写了一个多线程步骤,其中我 设置处理器类的输入和输出行 提交给遗嘱执行人服务 获取所有未来对象并收集最终输出
所以我正在编写代码,它将解析文件夹中的多个文本文件,收集它们的信息,并将这些信息保存在两个静态列表实例变量中。信息存放的顺序并不重要,因为我最终将对其进行排序。但由于某些原因,增加线程数不会影响速度。这是我的run方法和主方法中利用多线程的部分。 如果需要额外的信息,我基本上有一个静态实例变量作为我需要浏览的文件的数组,还有一个常量是线程数(为了测试目的手动更改)。如果我有4个线程和8个文件,每个
我有一个图像路径列表,我想在进程或线程之间划分,以便每个进程处理列表的某些部分。处理包括从磁盘加载图像,进行一些计算并返回结果。我正在使用Python 2.7 下面是我如何创建辅助进程 我所面临的问题是,当我在initializer函数中记录初始化时间时,我知道worker不是并行初始化的,而是每个worker都以5秒的间隔初始化,下面是供参考的日志 我尝试过使用将同时启动辅助线程 我知道Wind
问题内容: 在效率和代码清晰性方面,决定使用线程或多处理时应遵循哪些良好准则? 问题答案: 线程和多处理之间的许多差异并不是真正针对Python的,某些差异特定于某个Python实现。 对于CPython,在以下情况下,我都将使用该模块: 由于性能原因,我需要同时使用多个内核。使用线程时,全局解释器锁(GIL)将阻止任何加速。(无论如何,有时在这种情况下您都可以避免使用线程,例如,当主要工作是在通