【JAVA多线程实战-结果同步】

线程池

ThreadPoolExecutor

ExecutorService EXECUTOR = new ThreadPoolExecutor(10, 20, 30L, TimeUnit.SECONDS,
            new LinkedBlockingQueue<>(1024), ThreadFactoryBuilder.create().setNamePrefix("Bind-Executor-").build());

param1:核心线程数
param:2:最大线程数
param3:闲置时间(到达闲置时间自动关闭线程)
param4:闲置时间单位
param5:等待缓存区
param6:创建一个新线程

线程

Callable

public static class DemoThread implements Callable<Integer> {
        private Integer total;
        DemoThread(Integer total){
            this.total = total;
        }

        @Override
        public Integer call() throws Exception {
            Thread.sleep(1000);
            return total += 1;
        }
    }

示例

使用线程

public static void test() throws ExecutionException, InterruptedException {
        long start = System.currentTimeMillis();
        LinkedList<Future<Integer>> futures = new LinkedList<>();
        LinkedList<Integer> result = new LinkedList<>();
        for (int i = 0; i < 100; i++) {
            Future<Integer> submit = EXECUTOR.submit(new DemoThread(i));
            futures.add(submit);
        }
        for (Future<Integer> f : futures){
            while (true){
                if(f.isDone() && !f.isCancelled()){
                    result.add(f.get());
                    break;
                }
            }
        }
        System.out.println("test:" + result.toString());
        EXECUTOR.shutdown();
        System.out.println("test:" + "运行时长" + (System.currentTimeMillis() - start) + "ms");
    }

结果:
在这里插入图片描述

不使用线程

public static void test2() throws InterruptedException {
        long start = System.currentTimeMillis();
        LinkedList<Integer> result = new LinkedList<>();
        for (int i = 0; i < 100; i++) {
            int bi = i + 1;
            Thread.sleep(1000);
            result.add(bi);
        }
        System.out.println("test2:" + result.toString());
        System.out.println("test2:" + "运行时长" + (System.currentTimeMillis() - start) + "ms");
    }

结果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值