栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

多线程学习一CompletableFutureDemo使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多线程学习一CompletableFutureDemo使用

package ThreadDemo;


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.*;
import java.util.function.Function;
import java.util.stream.Collectors;


import lombok.var;
import org.apache.poi.ss.formula.functions.T;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;


public class CompletableFutureDemo {
    private static final ExecutorService THREAD_POOL_EXECUTOR = new ThreadPoolExecutor(10, 10, 60L,
            TimeUnit.SECONDS, new linkedBlockingQueue(100000));
    public static void main(String[] args) {
        CompletableFutureDemo completableFutureDemo=new CompletableFutureDemo();

        Listlist=new ArrayList<>();
        list.add(999);
        list.add(3);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        list.add(8);
        list.add(9);



    List future2 =  completableFutureDemo.invokeAsyncForList(list,getF(list));


//        CompletableFuture future2 = new CompletableFuture();
        Integer result = (Integer) future2.get(0);
        System.out.println(result);
        Integer result2 = (Integer) future2.get(1);
        System.out.println(result);
        Integer result3 = (Integer) future2.get(2);
        System.out.println(result);
        Integer result4 = (Integer) future2.get(3);
        System.out.println(result);


    }



    public static Function,List> getF(List integers){
        return t->{
            System.out.println(integers.size());
            return Collections.singletonList(t.stream().reduce(Integer::sum).orElse(0));
        };
    };


    public  List invokeAsyncForList(List params, Function, List> function){
        List resultList = Lists.newArrayList();
        //按指定长度 进行切分
        List> paramList = Lists.partition(params,2);
        System.out.println(paramList.size());
        try{
            List>> futureList = paramList
                    .stream()
                    .map(pa -> CompletableFuture.supplyAsync(() -> function.apply(pa) ,THREAD_POOL_EXECUTOR))
                    .collect(Collectors.toList());

            List> joinList = futureList.stream().map(CompletableFuture::join).collect(Collectors.toList());
            joinList.stream().forEach(System.out::println);
            joinList.stream().forEach(resultList::addAll);
        }catch (Exception e) {
            System.out.println(e.getMessage());
        }

        return resultList;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号