线程解决:一个长度的30000的int数组,其中放随机数,利用多核的优势,求数组中元素的和
来源:互联网 发布:强力数据恢复软件官网 编辑:程序博客网 时间:2024/05/29 05:52
1.创建一个普通方法(带参)
2.通过构造方法将参数初始化
3.在run方法调用这个普通方法(创建线程)
4.通过传参重用这个普通方法,创建出自己所需要的线程数量!
实例:
package com.wu.threadDemo;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ManyThread implements Runnable{
private int startNum;
private int[] theRs = new int[5000];
private static int[]theSum = new int[6];
public ManyThread(int startNum1,int []theRs1)
{
this.startNum = startNum1;
this.theRs = theRs1;
}
public int sumRs(int startNum,int[] theRs)
{
int first = (startNum-1)*5000;
int sum = 0;
for(int i = first;i < first+5000;i++)
{
sum += theRs[i];
}
return sum;
}
@Override//创建线程
public void run() {
theSum[startNum-1] = sumRs(startNum, theRs);
System.out.println("线程"+startNum +" :结果: "+theSum[startNum-1]);
}
public static void main(String[] args) {
int[] myRs = new int[30000];
for(int i = 0; i < myRs.length;i++)
{
myRs[i] = new Random().nextInt(30000);
}
//按需个数固定的线程:调用线程
ExecutorService threadPool = Executors.newFixedThreadPool(6);
threadPool.submit(new ManyThread(1, myRs));
threadPool.submit(new ManyThread(2, myRs));
threadPool.submit(new ManyThread(3, myRs));
threadPool.submit(new ManyThread(4, myRs));
threadPool.submit(new ManyThread(5, myRs));
threadPool.submit(new ManyThread(6, myRs));
threadPool.shutdown();////关闭线程池,不中断运行中的线程,只防止新线程submit其中
int allSum = 0;
int allSum1 = 0;//验证结果
for(int i = 0; i < 6; i++)
allSum += theSum[i];
System.out.println("所有结果和 :"+allSum);
for(int i = 0; i < myRs.length;i++)
allSum1 +=myRs[i];
System.out.println("验证结果 :"+allSum1);
}
}
private int startNum;
private int[] theRs = new int[5000];
private static int[]theSum = new int[6];
public ManyThread(int startNum1,int []theRs1)
{
this.startNum = startNum1;
this.theRs = theRs1;
}
public int sumRs(int startNum,int[] theRs)
{
int first = (startNum-1)*5000;
int sum = 0;
for(int i = first;i < first+5000;i++)
{
sum += theRs[i];
}
return sum;
}
@Override//创建线程
public void run() {
theSum[startNum-1] = sumRs(startNum, theRs);
System.out.println("线程"+startNum +" :结果: "+theSum[startNum-1]);
}
public static void main(String[] args) {
int[] myRs = new int[30000];
for(int i = 0; i < myRs.length;i++)
{
myRs[i] = new Random().nextInt(30000);
}
//按需个数固定的线程:调用线程
ExecutorService threadPool = Executors.newFixedThreadPool(6);
threadPool.submit(new ManyThread(1, myRs));
threadPool.submit(new ManyThread(2, myRs));
threadPool.submit(new ManyThread(3, myRs));
threadPool.submit(new ManyThread(4, myRs));
threadPool.submit(new ManyThread(5, myRs));
threadPool.submit(new ManyThread(6, myRs));
threadPool.shutdown();////关闭线程池,不中断运行中的线程,只防止新线程submit其中
int allSum = 0;
int allSum1 = 0;//验证结果
for(int i = 0; i < 6; i++)
allSum += theSum[i];
System.out.println("所有结果和 :"+allSum);
for(int i = 0; i < myRs.length;i++)
allSum1 +=myRs[i];
System.out.println("验证结果 :"+allSum1);
}
}
0 0
- 线程解决:一个长度的30000的int数组,其中放随机数,利用多核的优势,求数组中元素的和
- 求一个整型数组中元素的平均值,并统计其中大于和小于此平均值的元素的个数。
- 求一个数组的长度
- 求一个数组的长度
- 求数组(只有正数)中元素和为K的最长子数组的长度
- 编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组
- C语言中如何求任意一个int型数组的长度
- C语言中如何求任意一个int型数组的长度?
- C语言中如何求任意一个int型数组的长度?
- C语言中可以求任意一个int型数组的长度吗?
- 编写一个Java程序,创建制定长度的int型数组,并生成100以内的随机数为数组的每个元素赋值
- 求数组中元素的和
- 求数组的长度?
- 求数组的长度
- 求数组的长度
- 求数组元素的和。
- 求数组元素的和
- 给定一个数组,根据数组名求数组的长度
- 前序-中序-后序-非递归-实现
- [HDU 5536] Chip Factory (trie树+异或)
- XMLHttpRequest Level 2 特性介绍
- [从头学绘画] 第11节 二十四式太极拳(19-24)
- 阿里云 centos7 mysql远程连接报错
- 线程解决:一个长度的30000的int数组,其中放随机数,利用多核的优势,求数组中元素的和
- word 2007 中插入图片无法显示,只能显示底部一部分
- Python crawler 豆瓣电影排行榜评分
- Android studio 问题集合
- iOS图片处理之涂抹马赛克解析
- poj1113(凸包Graham算法)
- Linux下的目录及其操作命令(四、链接文件的命令)
- Linux与Windows下双系统的安装卸载以及相关问题
- 直接拿来用!最火的Android开源项目整理