我是春季批次的新手。我已经使用多个线程从 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();
}
}
如上所述,代码在任务“hello”和任务“world”的 5 个不同线程中运行,尽管即使在 main 方法的最后一行“执行结束”之后,它也不会导致主程序的执行停止执行。任何链接白皮书都将非常受欢迎。在此先感谢萨米尔