如何在不等待执行结束的情况下从用户界面启动作业?

How can I launch a job from user interface without waiting for the end of execution?

我使用 spring 批处理 3 读取一些文件并将数据插入数据库,但我想将进程从用户执行开始解耦,以允许用户做其他事情。

@Resource
private JobLauncher jobLauncher;

Job importJobToProgress = queueJob.poll();

JobParameters jobParameters = new JobParametersBuilder()
            .addDate("date", new Date())
            .toJobParameters();

jobLauncher.run(importJobToProgress, jobParameters);

我应该使用 SimpleAsyncTaskExecutor 还是 ThreadPoolTask​​Executor?

两者都可以。 ThreadPoolTaskExecutor 是更高的生产级别,因为它不允许产生无限数量的线程。 SimpleAsyncTaskExecutor 会盲目地创建新线程。