【java多线程】java多线程,通过CompletableFuture来完成多线程任务
像上面这样,使用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<Runnable>(300), threadFactory, new ThreadPoolExecutor.CallerRunsPolicy());
return threadPool;
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)