CallableTaskletAdapter Spring Batch

Posted

技术标签:

【中文标题】CallableTaskletAdapter Spring Batch【英文标题】: 【发布时间】:2020-08-26 19:17:05 【问题描述】:

CallableTaskletAdapter 是否使用与步骤本身不同的线程?

    @Bean
    public Callable<RepeatStatus> callableObject() 

        return () -> 
            System.out.println(Thread.currentThread().getName());
            System.out.println("This was executed in another thread");

            return RepeatStatus.FINISHED;
        ;
    

    @Bean
    public CallableTaskletAdapter tasklet() 
        CallableTaskletAdapter callableTaskletAdapter =new CallableTaskletAdapter();

        callableTaskletAdapter.setCallable(callableObject());

        return callableTaskletAdapter;
    
@Bean
    public Step callableStep() 
        System.out.println(Thread.currentThread().getName());
        return this.stepBuilderFactory.get("callableStep")
                .tasklet(tasklet())
                .build();
    

运行此代码会在可调用的 tasklet 中将线程名称打印为“ma​​in”。这意味着它没有使用新线程。我错过了什么吗?

【问题讨论】:

【参考方案1】:

CallableTaskletAdapter 是否使用与步骤本身不同的线程?

不,它不使用单独的线程。它callsCallable#call使用执行tasklet的线程。

【讨论】:

以上是关于CallableTaskletAdapter Spring Batch的主要内容,如果未能解决你的问题,请参考以下文章

SP3485

带有 WSUS 3.1 SP2 的移动设备管理器 2008 SP1

ARMv8学习 —— SP_EL0和SP_ELx

SP706SEN片子的作用

PostgreSql中是不是有等效于sp_getapplock,sp_releaseapplock的?

sp_MSforeachtable 与 sp_MSforeachdb