处理许多线程数量有限的文件无法正常工作。任务完成后,该线程无法重用。允许将多个文件传递给数量有限的线程。
@Bean
public Step orderStep1() throws IOException {
return stepBuilderFactory.get("orderStep1")
.partitioner("slaveStep", partitioner())
.step(slaveStep())
.gridSize(40)
.taskExecutor(taskExecutor1())
.build();
}
@Bean
public ThreadPoolTaskExecutor taskExecutor1() {
ThreadPoolTaskExecutor taskExecutor1 = new ThreadPoolTaskExecutor();
taskExecutor1.setCorePoolSize(30);
return taskExecutor1;
}
@Bean
@StepScope
public FlatFileItemReader<GPRSDAO> reader(
@Value("#{stepExecutionContext['file']}") String file
) {
reader = new FlatFileItemReader<GPRSDAO>();
reader.setResource(new FileSystemResource(file));
reader.setLineMapper(new DefaultLineMapper<GPRSDAO>() {
{
setLineTokenizer(new DelimitedLineTokenizer() {
{
setNames(new String[] { "firstName","lastName" });
}
});
setFieldSetMapper(new BeanWrapperFieldSetMapper<GPRSDAO>() {
{
setTargetType(GPRSDAO.class);
}
});
}
});
reader.close();
return reader; }
Input files=100(set dynamically during runtime using stepExecutionContext)
答案 0 :(得分:0)
任务完成后,该线程无法重用。允许将多个文件传递给有限数量的线程。
您将核心池大小设置为30,但未设置maxPoolSize参数。您需要设置最大池大小以限制线程数。