Lab 1 Solutions
Solution to Question 4 - the Array Sum problem
You will need all the three classes below for compiling and running
//ArraySumThread.java public class ArraySumThread extends Thread { private int array[]; private int start; private int end; private int arraySum; public ArraySumThread(int _array[], int _start, int _end) { array = _array; start = _start; end = _end; } public void run() { arraySum = 0; for (int i = start; i <= end ; i++) arraySum = arraySum + array[i]; } public int getArraySum() { return arraySum; } }
//ArraySum.java import java.util.Random; public class ArraySum { public static void main(String args[]) { //create a large array of random numbers int array[] = new int[1000000]; fillArray(array); //create two ArraySumThreads and pass the array and range to sum ArraySumThread ast1 = new ArraySumThread(array, 0, 499999); ArraySumThread ast2 = new ArraySumThread(array, 500000, 999999); long start = System.currentTimeMillis(); //start the two threads ast1.start(); ast2.start(); try { ast1.join(); ast2.join(); } catch(InterruptedException intex) { } long stop = System.currentTimeMillis(); int totalSum = ast1.getArraySum() + ast2.getArraySum(); System.out.println("Total Sum="+totalSum); System.out.println("time taken =" + (stop - start) + " ms"); SequentialArraySumThread sst = new SequentialArraySumThread(array); sst.start(); } //fill the array with random numbers public static void fillArray(int arr[]) { Random r = new Random(); for(int i = 0; i <= arr.length - 1; i++) { arr[i] = r.nextInt(20000); } } }
//SequentialArraySumThread.java public class SequentialArraySumThread extends Thread { private int m_array[]; public SequentialArraySumThread(int array[]) { m_array = array; } public void run() { int sum = 0; long start = System.currentTimeMillis(); for(int number : m_array) sum = sum + number; long stop = System.currentTimeMillis(); System.out.println("Sum from sequential thread:"+ sum); System.out.println("time for sequential sum:"+ (stop - start)+ " ms"); } }
page revision: 3, last edited: 05 Mar 2011 11:49