编程题:
说明:1)用多线程的方式对inputs数组的每个元素作求和运算,例如某个元素为45,则计算:1+2+3+....+45
2)把计算结果放到outputs数组对应的索引的位置,例如:
inputs为:2,3,0,1 计算后outputs为:3,6,0,1
假定:outputs和inputs数组的元素个数一样
完成后,程序的最后会打印输入和正确的结果各一行上
实现代码:
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; } }
转载于:https://blog.51cto.com/8786457/1390062