Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Random;
- public class TenThreads {
- /* private static class WorkerThread extends Thread {
- int max = Integer.MIN_VALUE;
- int[] ourArray;
- public WorkerThread(int[] ourArray) {
- this.ourArray = ourArray;
- }
- // Find the maximum value in our particular piece of the array
- public void run() {
- for (int i = 0; i < ourArray.length; i++)
- max = Math.max(max, ourArray[i]);
- }
- public int getMax() {
- return max;
- }
- }*/
- private static class WT implements Runnable{
- int max=Integer.MIN_VALUE;
- int [] niza;
- public WT(int [] niza){
- this.niza=niza;
- }
- public void run(){
- for (int i = 0; i < niza.length; i++)
- max = Math.max(max, niza[i]);
- }
- public int getMax() {
- return max;
- }
- }
- public static void main(String[] args) {
- WT[] instanceWT = new WT[20];
- Thread[] threads= new Thread[20];
- int[][] bigMatrix = getBigHairyMatrix();
- int max = Integer.MIN_VALUE;
- // Give each thread a slice of the matrix to work with
- for (int i = 0; i < 20; i++) {
- instanceWT[i] = new WT(bigMatrix[i]);
- threads[i]=new Thread(instanceWT[i]);
- threads[i].start();
- }
- // Wait for each thread to finish
- try {
- for (int i = 0; i < 20; i++) {
- threads[i].join(); // why is this needed
- max = Math.max(max, instanceWT[i].getMax());
- }
- } catch (InterruptedException e) {
- // fall through
- }
- System.out.println("Maximum value was " + max);
- }
- static int[][] getBigHairyMatrix() {
- int x = 100;
- int y = 100;
- int[][] matrix = new int[x][y];
- Random rnd = new Random();
- for (int i = 0; i < x; i++)
- for (int j = 0; j < y; j++) {
- matrix[i][j] = rnd.nextInt(100);
- }
- matrix[5][7]=Integer.MAX_VALUE;
- return matrix;
- }
- }
- // join() metodot e neophoden bidejki dokolku ne e implementiran vo zadacata na mestoto kade se pobaruva maksimumot od sekoj thread
- // mozebi toj thread ne e zavrshil so presmetkata i ke dade nekoj maksimum koj e momentalen i neznaci deka e tocniot maksimum.
- // join() ni ovozmozuva da ne se povika metodot getMax() pred threadot da zavrshi so svojata presmetka , odnosno dodeka da umre.
- //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement