1. CompletableFuture异步线程的使用

// 异步线程的使用
CompletableFuture.runAsync(()->{
    // 发送微信通知
    // ... 
    this.weChatService.sendMessage();
    
    //加入超时队列
    this.publishNoticeEvent();
},executorService);

像上面这样,使用CompletableFuture来解决异步线程的操作,比如发送企业微信信息,加入通知队列等等耗时的异步操作。

这样操作和普通使用线程有什么区别呢: 一是使用了线程池,而是线程出现异常也可以统一处理维护。

2. executorService 线程池的配置


import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.*;

/**
 * @Description:  线程池 配置类中构建线程池实例
 */
@Configuration
public class ThreadPoolFactoryConfig {
    @Bean(value = "threadPoolInstance")
    public ExecutorService createThreadPoolInstance() {
        //使用guava包中的ThreadFactoryBuilder工厂类来构造线程池:
        ThreadFactory threadFactory = new ThreadFactoryBuilder().setNameFormat("xxx-yyy-%d").build();
        //初始化线程池
        ExecutorService threadPool = new ThreadPoolExecutor(20, 30, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(300), threadFactory, new ThreadPoolExecutor.CallerRunsPolicy());
        return threadPool;
    }
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐