线程解决:一个长度的30000的int数组,其中放随机数,利用多核的优势,求数组中元素的和
2016-10-07 16:31
141 查看
1.创建一个普通方法(带参)
2.通过构造方法将参数初始化
3.在run方法调用这个普通方法(创建线程)
4.通过传参重用这个普通方法,创建出自己所需要的线程数量!
实例:
package com.wu.threadDemo;
import java.util.Random;
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);
}
}
2.通过构造方法将参数初始化
3.在run方法调用这个普通方法(创建线程)
4.通过传参重用这个普通方法,创建出自己所需要的线程数量!
实例:
package com.wu.threadDemo;
import java.util.Random;
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);
}
}
相关文章推荐
- 编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。按照数组下标输出结果。
- 数组问题:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 编程产生一个int数组,长度为30,并向其中随机插入1-30,并且不能重复输出数组。实现一个冒泡排序算法对其进行排序,输出排序结果
- 给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字。(原数组不必保留)
- 温故知新--数组(产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。)
- a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- 面试题目产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- 用c# 产生一个 int 数组 长度为100,并向其中随机插入 1-100 ,并且不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- 产生一个int数组,长度为10,并向其中随机插入1-10,并且不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。自己写的算法
- 产生一个int数组,长度为100,并向其中随机插入1-100
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- 关于一道 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复