线程池(三):ForkJoinPool预热


prtyaa
prtyaa 2023-12-28 16:41:55 52290 赞同 0 反对 0
分类: 资源
模拟一个网络请求。代码如下图所示:

这个arraylist里,add了很多,我们通过主函数把这些add的内容全部打印了出来。


这个里面list里add的并不算很多,如果很多的话,那么将会很费时间。

那么当任务列表比较大的时候,需要将任务进行拆分。


新加一个静态类Task

然后原来的主函数变成了:

public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 当任务列表很大单个任务比较大的时候需要将任务进行拆分
        ExecutorService pool = Executors.newFixedThreadPool(3);
        List<Future> list = new ArrayList<>();

        int size = urls.size();
        int groupSize = 10;
        int groupCount = (size - 1) / groupSize + 1;
        //任务拆分
        for (int i = 0; i < groupCount - 1; i++) {
            int leftIndex = groupSize * i;
            int rightIndex = groupSize * (i + 1);
            Future<String> future = pool.submit(new Task(leftIndex, rightIndex));
            list.add(future);
        }

        int leftIndex = groupSize * (groupCount - 1);
        int rightIndex = size;
        Future<String> future = pool.submit(new Task(leftIndex, rightIndex));
        list.add(future);
        //foreach遍历结果
        for (Future<String> item : list) {
            System.out.println(item.get());
        }
        /* 用 for 循环遍历结果
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).get());
        }*/


    }

原来add的数据多了 ,add了22个,便于展示,运行结果如下:

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
prtyaaL2
粉丝 1 资源 1949 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  125
统信桌面专业版【全盘安装UOS系统】介绍  120
银河麒麟桌面操作系统安装佳能打印机驱动方法  112
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!