【多线程例题】编写代码, 实现多线程数组求和.【本题学习关键点:通过一个类 进行加法】

这篇具有很好参考价值的文章主要介绍了【多线程例题】编写代码, 实现多线程数组求和.【本题学习关键点:通过一个类 进行加法】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【多线程例题】编写代码, 实现多线程数组求和.【本题学习关键点:通过一个类 进行加法】,JavaEE初阶,学习,python,开发语言文章来源地址https://www.toymoban.com/news/detail-563874.html

import java.util.Random;

/**
 * 题目名称 :
 * 编写代码, 实现多线程数组求和.
 * 题目内容 :
 * 1. 给定一个很长的数组 (长度 1000w), 通过随机数的方式生成 1-100 之间的整数.
 * 2. 实现代码, 能够创建两个线程, 对这个数组的所有元素求和.
 * 3. 其中线程1 计算偶数下标元素的和, 线程2 计算奇数下标元素的和.
 * 4. 最终再汇总两个和, 进行相加
 * 5. 记录程序的执行时间.
 *
 */
class Thread_ {
    public static void main(String[] args) throws InterruptedException {
        // 记录开始时间
        long start = System.currentTimeMillis();

        // 1. 给定一个很长的数组 (长度 1000w), 通过随机数的方式生成 1-100 之间的整数.
        int total = 1000_0000;
        int [] arr = new int[total];
        // 构造随机数,填充数组
        Random random = new Random();
        for (int i = 0; i < total; i++) {
            int num = random.nextInt(100) + 1;
            arr[i] = num;
        }


        // 2. 实现代码, 能够创建两个线程, 对这个数组的所有元素求和.
        // 3. 其中线程1 计算偶数下标元素的和, 线程2 计算奇数下标元素的和.
        // 实例化操作类
        SumOperator operator = new SumOperator();
        // 定义具体的执行线程
        Thread t1 = new Thread(() -> {
            // 遍历数组,累加偶数下标
            for (int i = 0; i < total; i += 2) {
                operator.addEvenSum(arr[i]);
            }
        });

        Thread t2 = new Thread(() -> {
            // 遍历数组,累加奇数下标
            for (int i = 1; i < total; i += 2) {
                operator.addOddSum(arr[i]);
            }
        });

        // 启动线程
        t1.start();
        t2.start();
        // 等待线程结束
        t1.join();
        t2.join();

        // 记录结束时间
        long end = System.currentTimeMillis();
        // 结果
        System.out.println("结算结果为 = " + operator.result());
        System.out.println("总耗时 " + (end - start) + "ms.");
    }
}

// 累加操作用这个类来完成
class SumOperator {
    long evenSum;
    long oddSum;

    public void addEvenSum (int num) {
        evenSum += num;
    }

    public void addOddSum (int num) {
        oddSum += num;
    }

    public long result() {
        System.out.println("偶数和:" + evenSum);
        System.out.println("奇数和:" + oddSum);
        return evenSum + oddSum;
    }
}

到了这里,关于【多线程例题】编写代码, 实现多线程数组求和.【本题学习关键点:通过一个类 进行加法】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 五种C语言编写的数列求和程序

    一、以下是一个简单使用C语言编写的数列求和程序: 在程序中,我们首先使用 scanf 函数从键盘输入数列的项数 n 。然后,使用 for 循环计算数列的和,将每一项的值加到 sum 变量中。最后,使用 printf 函数输出数列的和。 需要注意的是,上述程序中假设数列的项数 n 大于等于

    2024年02月04日
    浏览(46)
  • 动态规划例题(代码随想录学习)——持续更新

    dp[i][j]的含义是:从(0,0)到(i,j)的不同路径 当路线中有了障碍,此路不通,所以在不同路径的递推公式上需要增加条件 if(obs[i,j]==0)没有障碍,dp[i][j]= dp[i-1][j]+dp[i][j-1] if(obs[i][j]==1)有障碍,不进行推导 obs数组表示障碍 障碍的后面应该是0(原因:遇到障碍后,即

    2024年04月12日
    浏览(44)
  • JS 数组求和计算

    项目中,有一个数组,纯数字,需要计算求和。不想使用循序遍历。 array.join(separator):是把数组中的所有元素转换为一个字符串。separator 可选。指定要使用的分隔符,如果省略该参数,则使用逗号作为分隔符。 separator也可以改为减、乘、除或其他计算 eval(string):是JavaScri

    2024年02月11日
    浏览(35)
  • 数组对象求和

    使用场景      在一个数组对象中,求对象中某一个字段的总和

    2024年02月07日
    浏览(33)
  • 数组求和的五种方法

    // 数组求和的方法 let arr = [1,2,3,4,5] // 方法一:递归 function sum(arr){ const len = arr.length; if(len === 0) { return 0; } else if(len === 1){ return arr[0]; } else { return arr[0] + sum(arr.slice(1)); } } // 方法二:循环 function sum(arr) { let s = 0; for(let i=0; iarr.length; i++){ s += arr[i] } return s; } // 方法三:map-reduce

    2024年02月10日
    浏览(44)
  • JS数组求和的几种方法

    这篇文章主要介绍了JS数组求和的几种常用方法 方法一:通过原型对象扩展内置对象方法(即给Array增加方法) 方法二:普通for循环函数求和 方法三:使用递归 方法四:函数式编程reduce 拓展:注意reduce()方法的最后一个参数(下面是个特例),避坑!!! 方法五:forEach遍历

    2024年02月01日
    浏览(47)
  • C语言二维数组中:主次对角线求和,上下三角求和,杨辉三角,矩阵转置

     p8 有些的结论需要直接记住 目录 矩阵转置  主对角线和次对角线 下三角 和上三角(一般是让求和) 下三角  上三角 杨辉三角 不是方阵 需要用到第二个二维数组  b[i][j]=a[i][j] 是方阵     方法1 借助第二个二维数组,同上 方法2    下三角换即可(是方阵的话一般题目都

    2024年01月22日
    浏览(52)
  • Excel·VBA二维数组组合函数、组合求和

    之前的文章《Excel·VBA数组组合函数、组合求和》和《Excel·VBA数组排列函数》,都是针对 一维数组 的组合和排列 二维数组组合:对一个 m行*n列 的二维数组,每行抽取1个元素进行组合,则共有 n ^ m 个组合 代码思路,类似之前的文章“VBA排列函数”尾数循环的方式 举例 组合

    2024年02月11日
    浏览(50)
  • XDOJ例题及答案第七更 计算整数各位数字之和简单程序奖金计算角谷定理阶乘运算阶乘之和阶梯电价计费阶梯电价计算 金字塔打印矩阵矩阵对角线求和矩阵求和累加和校验利率计算 利润计算螺旋填数马鞍点

    目录 计算整数各位数字之和 简单程序 奖金计算 角谷定理 阶乘运算 阶乘之和 阶梯电价计费 阶梯电价计算 金字塔打印 矩阵 矩阵对角线求和 矩阵求和 累加和校验 利率计算 利润计算 螺旋填数 马鞍点

    2024年02月05日
    浏览(103)
  • JS操作数组神器——reduce(求和、出现次数、去重、分类)

    reduce() 对数组每个元素执行一次由您提供的reduce函数(升序执行),将其结果汇总为单个返回值。 循环遍历能做的,reduce都可以做。比如数组根据元素某个属性求和、数组元素出现次数、数组去重、数组根据某个元素属性分类等等。 参数介绍 prev 必需。累计器累计回调的返回值

    2023年04月26日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包