java8多线程使用示例

复制代码
使用CompletableFuture.allOf实现异步执行同步搜集结果

/**
     * @author wjq
     * @create 2022-03-12 16:19
     */
    public class TestCompleteFuture {
    
        private static final int corePoolSize = 10; // 核心线程数
        private static final int maximumPoolSize = 20; // 最大线程数
        private static final long keepAliveTime = 60; // 存活时间
        /**
         * 自定义线程池
         */
        private static final ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime,
                TimeUnit.SECONDS, new ArrayBlockingQueue(100), new ThreadPoolExecutor.CallerRunsPolicy());
    
        /**
         * 使用CompletableFuture完成多任务执行示例
         * @param args
         */
        public static void main(String[] args) {
            List<String> resultList = new ArrayList<>();
            // CompletableFuture list
            List<CompletableFuture<?>> list = new ArrayList<>();
            // 第一个任务
            list.add(CompletableFuture.runAsync(() -> {
                // TODO: 具体的任务执行...
                resultList.add("第一个任务的执行结果");
            }, executor));
            // 第二个任务
            list.add(CompletableFuture.runAsync(() -> {
                // TODO: 具体的任务执行...
                resultList.add("第二个任务的执行结果");
            }, executor));
            // 第三个任务
            list.add(CompletableFuture.runAsync(() -> {
                // TODO: 具体的任务执行...
                resultList.add("第三个任务的执行结果");
            }, executor));
            // 第四个任务
            list.add(CompletableFuture.runAsync(() -> {
                // TODO: 具体的任务执行...
                resultList.add("第四个任务的执行结果");
            }, executor));
            // 待等所有任务执行完成
            CompletableFuture.allOf(list.toArray(new CompletableFuture[0])).join();
            System.out.println(resultList);
        }
    }
复制代码

 

posted @   天际星痕  阅读(209)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示