Solon

solon.extend.async

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon.extend.async</artifactId>
</dependency>

1、描述

基础扩展插件,为 solon 提供异步调用的能力

2、代码应用

//启用异步调用注解
@EnableAsync
public class DemoApp {
    public static void main(String[] args) {
        Solon.start(DemoApp.class, args);
    }
}

//定义个服务
@Service
public class AsyncTask {
    //会被异步运行(提交到异步执行器运行)//不要返回值(返回也拿不到)
    @Async
    public void test(String hint){
        System.out.println(Thread.currentThread().getName());
    }
}

//应用
@Controller
public class DemoController{
    @Inject
    AsyncTask asyncTask;
    
    @Mapping("/test")
    public void test(){
        //调用
        asyncTask.test("test");
    }
}

3、定制执行器

@Configuration
public class Config {
    @Bean
    public void asyncTask(){
        //定义个线程池
        ExecutorService pools = Executors.newCachedThreadPool();
        AsyncManager.setExecutor(task -> {
            //提交任务
            pools.submit(task);
        });
        
        //理论上,也可以直接执行。就变成同步的了:)
    }
}