码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用线程池,并发计算1~50、51~100的和,再进⾏汇总统计。


    知识点:获取线程池、提交任务、获取返回值

     

    获取线程池的几种方式:

    newFixedThreadPool(int nThreads) 获取固定数量的线程池。参数:指定线程池中线程的数量。(使用这种)

    newCachedThreadPool() 获得动态数量的线程池,如不够则创建新的,⽆上限。

    newSingleThreadExecutor() 创建单个线程的线程池,只有⼀个线程。

    newScheduledThreadPool() 创建固定⼤⼩的线程池,可以延迟或定时执⾏任务。

     

    Callable:jdk1.5之后可以使用Callable来实现线程,这个类的call方法具有泛型返回值、可以声明异常。

    Runnable接⼝和Callable接⼝的区别:

    Callable接⼝中call⽅法有返回值,Runnable接⼝中run⽅法没有返回值。

    Callable接⼝中call⽅法有声明异常,Runnable接⼝中run⽅法没有异常。

     

    Future接⼝表示将要执⾏完任务的结果。 get()以阻塞形式等待Future中的异步处理结果(call()的返回值)。

     

    案例1:使⽤两个线程,并发计算1~50、51~100的和,再进⾏汇总统计。

    复制代码
    public class TestFuture2 {
        public static void main(String[] args) throws Exception{
            //1创建线程池
            ExecutorService es= Executors.newFixedThreadPool(2);
            //2提交任务
            Future future1=es.submit(new Callable() {
                @Override
                public Integer call() throws Exception {
                    int sum=0;
                    for(int i=1;i<=50;i++) {
                        sum+=i;
                    }
                    System.out.println("1-50计算完毕");
                    return sum;
                }
            });
    
            Future future2=es.submit(new Callable() {
                @Override
                public Integer call() throws Exception {
                    int sum=0;
                    for(int i=51;i<=100;i++) {
                        sum+=i;
                    }
                    System.out.println("51-100计算完毕");
                    return sum;
                }
            });
            //3获取结果
            int sum=future1.get()+future2.get();
            System.out.println("结果是:"+sum);
            //4关闭线程池
            es.shutdown();
        }
    }
    复制代码

     

  • 相关阅读:
    LED点灯
    Python之网络编程
    【Harmony OS】【ARK UI】组件内转场api 基本使用
    Android面试题——高级开发面试题一
    Java异常、继承结构、处理异常、自定义异常、SpringBoot中全局捕获处理异常
    【CSDN竞赛解析】使用n位定点数编码方案,最多能够.| 在同时涉及极大和极小浮点数值的算法.| 使用IEEE754标准,可以准确.| 路灯亮度:有一条长度为n米的街道.| 池塘水量:某地有n个池塘,
    前端flex布局
    Spring工具类--CollectionUtils的使用
    【Leetcode】2864. 最大二进制奇数
    爬虫学习(05): 数据解析_bs4篇
  • 原文地址:https://www.cnblogs.com/huangruiwu/p/16610223.html
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号