Да, поток 1 и поток 2 запускаются одновременно в коде, который вы дали.В методе Split вы передали реализацию асинхронного исполнителя задач, которая гарантирует, что потоки выполняются параллельно, вы можете увидеть это сами в журналах, настроив реализацию и назначив имя группы потоков.
@Bean
public TaskExecutor taskExecutor() {
ThreadGroup threadGroup = new ThreadGroup("Example");
Runtime runtime = Runtime.getRuntime();
int nrCpu = runtime.availableProcessors();
SimpleAsyncTaskExecutor asyncTaskExecutor = new
SimpleAsyncTaskExecutor("split-flow");
asyncTaskExecutor.setThreadGroup(threadGroup);
asyncTaskExecutor.setConcurrencyLimit(10);
return asyncTaskExecutor;
}
В журналах вы найдете что-то вроде этого:
debug 10888 --- [ split-flow1] o.s.batch.core.job.SimpleStepHandler : Executing step: [step1]
debug 10888 --- [ split-flow2] o.s.batch.core.job.SimpleStepHandler : Executing step: [step3]
здесь, split-flow1 и split-flow2 - это два разных потока.