【java多线程】java多线程,通过CompletableFuture来完成多线程任务

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(300), threadFactory, new ThreadPoolExecutor.CallerRunsPolicy());
        return threadPool;
    }
}

你可能感兴趣的:(java,小程序)