公司面试题——线程数组求和
2013-06-20 17:29
344 查看
编程题:
说明:1)用多线程的方式对inputs数组的每个元素作求和运算,例如某个元素为45,则计算:1+2+3+....+45
2)把计算结果放到outputs数组对应的索引的位置,例如:
inputs为:2,3,0,1 计算后outputs为:3,6,0,1
假定:outputs和inputs数组的元素个数一样
完成后,程序的最后会打印输入和正确的结果各一行上
实现代码:
[java] view
plaincopy
package com.image.common.util;
import java.util.ArrayList;
import java.util.List;
public class TestMain {
public static void main(String[] args) {
int[] inputs = new int[]{2,3,0,1};
int[] outputs = new int[inputs.length];
List<TestThread> list = new ArrayList<TestThread>();
TestThread temp = null;
for(int i=0;i<inputs.length;i++){
temp = new TestThread(inputs[i]);
list.add(temp);
temp.start();
}
for (int i = 0; i < list.size(); i++) {
try {
list.get(i).join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
String result = "";
for (int i = 0; i < list.size(); i++) {
outputs[i] = list.get(i).getResult();
result = result + outputs[i] + ",";
}
System.out.println("结果:"+result);
}
}
class TestThread extends Thread{
private int operation;
private int result;
public TestThread(int operation){
this.operation = operation;
}
public void run() {
for (int i = 1; i <= operation; i++) {
result += i ;
}
}
public int getOperation() {
return operation;
}
public void setOperation(int operation) {
this.operation = operation;
}
public int getResult() {
return result;
}
public void setResult(int result) {
this.result = result;
}
}
说明:1)用多线程的方式对inputs数组的每个元素作求和运算,例如某个元素为45,则计算:1+2+3+....+45
2)把计算结果放到outputs数组对应的索引的位置,例如:
inputs为:2,3,0,1 计算后outputs为:3,6,0,1
假定:outputs和inputs数组的元素个数一样
完成后,程序的最后会打印输入和正确的结果各一行上
实现代码:
[java] view
plaincopy
package com.image.common.util;
import java.util.ArrayList;
import java.util.List;
public class TestMain {
public static void main(String[] args) {
int[] inputs = new int[]{2,3,0,1};
int[] outputs = new int[inputs.length];
List<TestThread> list = new ArrayList<TestThread>();
TestThread temp = null;
for(int i=0;i<inputs.length;i++){
temp = new TestThread(inputs[i]);
list.add(temp);
temp.start();
}
for (int i = 0; i < list.size(); i++) {
try {
list.get(i).join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
String result = "";
for (int i = 0; i < list.size(); i++) {
outputs[i] = list.get(i).getResult();
result = result + outputs[i] + ",";
}
System.out.println("结果:"+result);
}
}
class TestThread extends Thread{
private int operation;
private int result;
public TestThread(int operation){
this.operation = operation;
}
public void run() {
for (int i = 1; i <= operation; i++) {
result += i ;
}
}
public int getOperation() {
return operation;
}
public void setOperation(int operation) {
this.operation = operation;
}
public int getResult() {
return result;
}
public void setResult(int result) {
this.result = result;
}
}
相关文章推荐
- 公司面试题---线程数组求和
- 公司面试题---线程数组求和
- [练习]在一个数组中存300条记录,用3个线程统计求和。
- 前端面试题(数组中求和)
- 面试例题:输入n,求一个n x n矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现? (中国台湾著名硬件公司2007年11月面试题)
- 游戏公司面试题:Java如何实现二维逆时针旋转数组
- 线程同步面试题,3个线程打印一个1-100的数组,要求P1=1,P2=2,P3=3,P1=4的形式
- 数组面试题--数组求和
- 一家公司面试题,回旋数组
- 【STL】std::accumulate数组或容器求和
- 在数组中找出只出现一次的两个数(面试题)
- 面试题--数组旋转续
- 剑指offer 面试题29 寻找数组中出现次数超一半的数字
- 2个线程向同一数组中加随机数,每个数组加3个数,交替
- 剑指Offer面试题51(Java版):数组中重复的数字
- Java线程面试题 Top 50
- JAVA面试题,关于线程循环
- Crystal自定义函数(转换为大写,返回数组,求和)