編程題:
說明: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;
- }
- }