我是spring批處理的新手。我通過使用多線程創建併成功執行了春季的作業,除了在程序執行完成時,程序流程不會結束/暫停之外,它的工作方式非常好。即使當main方法的最後一條語句被執行時,程序也不會退出。我不確定它是否繼續等待線程完成或者什麼。有人可以請這個建議嗎? 你好‘「下面是工作彈簧批處理線程執行完主線程後不返回
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="maxPoolSize" value="5" />
</bean>
<batch:job id="helloWorldJob" job-repository="jobRepository">
<batch:step id="step0" next="step1">
<batch:tasklet ref="hello" transaction-manager="transactionManager" task-executor="taskExecutor" />
</batch:step>
<batch:step id="step1">
<batch:tasklet ref="world" transaction-manager="transactionManager" />
</batch:step>
</batch:job>
而且我下面的配置文件是啓動代碼
public static void main(String args[]) {
try {
new ClassPathXmlApplicationContext("simpleJob.xml");
JobParametersBuilder builder = new JobParametersBuilder();
builder.addString("Date", "12/02/2011");
jobLauncher.run(job, builder.toJobParameters());
JobExecution jobExecution = jobRepository.getLastJobExecution(job.getName(), builder.toJobParameters());
System.out.println("\n\n"+jobExecution.toString());
Thread.sleep(5000);
System.out.println("End of execution ");
} catch(Exception e) {
e.printStackTrace();
}
}
正如上面所說的,代碼在5個不同的線程任務運行’,一旦任務即使主程序的最後一行「執行結束」執行後,也不會使主程序的執行停止,但是「世界」不會導致主程序的執行停止 預先致謝 Samir
我發現中間的'Thread.sleep(5000)'有點可疑。你爲什麼需要這樣做?不應該在啓動器中阻止作業執行。 另一種評論:作業啓動器的返回值是一個JobExecution,因此不需要從JobRepository中再次獲取它。 –