Markou moment
This commit is contained in:
parent
b96b2eeb8c
commit
8fb402c420
1
.gitignore
vendored
1
.gitignore
vendored
@ -90,3 +90,4 @@
|
||||
/Semester 3/Assignments/Ajax6_getters_setters_CalebFontenot/target/
|
||||
/Semester 3/Assignments/mavenproject1/target/
|
||||
/Semester 3/Assignments/Templates01_CalebFontenot/target/
|
||||
/Semester 3/Assignments/MaxTask/target/
|
||||
|
@ -16,8 +16,8 @@ public class MaxTask {
|
||||
|
||||
}
|
||||
public static int max(int[] list) {
|
||||
RecursiveTask<Integer> task = new MaxTask(list 0, list.length) {
|
||||
|
||||
//RecursiveTask<Integer> task = new MaxTask(list 0, list.length) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
||||
*/
|
||||
package edu.slcc.asdv.caleb.maxtask;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author caleb
|
||||
*/
|
||||
import java.util.concurrent.*;
|
||||
public class ParallelMax
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
// Create a list
|
||||
final int N = 200000000;
|
||||
int[] list = new int[N];
|
||||
for (int i = 0; i < list.length; i++)
|
||||
list[i] = i;
|
||||
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
System.out.println("\nPaaraller\nThe maximal number is " + max(list));
|
||||
long endTime = System.currentTimeMillis();
|
||||
System.out.println("Time with " + (endTime - startTime)
|
||||
+ " milliseconds");
|
||||
System.out.println("Number of processors is "
|
||||
+ Runtime.getRuntime().availableProcessors());
|
||||
|
||||
System.out.println("-------------------------------");
|
||||
startTime = System.currentTimeMillis();
|
||||
int maximum = -1;
|
||||
|
||||
for (int i = 0; i < list.length; i++)
|
||||
if ( list[i] > maximum )
|
||||
maximum = list[i];
|
||||
endTime = System.currentTimeMillis();
|
||||
System.out.println("Sequential\nThe maximal number is " + maximum) ;
|
||||
System.out.println("Time NOT in paraller " + (endTime - startTime)
|
||||
+ " milliseconds");
|
||||
}
|
||||
public static int max( int[] list )
|
||||
{
|
||||
RecursiveTask<Integer> task = new MaxTask(list, 0, list.length);
|
||||
ForkJoinPool pool = new ForkJoinPool();
|
||||
return pool.invoke( task );
|
||||
}
|
||||
|
||||
private static class MaxTask
|
||||
extends RecursiveTask<Integer>
|
||||
{
|
||||
|
||||
private final static int THRESHOLD = 25000;
|
||||
|
||||
|
||||
private int[] list;
|
||||
private int low;
|
||||
private int high;
|
||||
|
||||
public MaxTask(int[] list, int low, int high)
|
||||
{
|
||||
this.list = list;
|
||||
this.low = low;
|
||||
this.high = high;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Integer compute()
|
||||
{
|
||||
if ( high-low < THRESHOLD)//not parallel
|
||||
{
|
||||
int max = list[0];
|
||||
for (int i = low; i < high; i++)
|
||||
if (list[i] > max)
|
||||
max = list[i];
|
||||
return new Integer(max);
|
||||
}
|
||||
else
|
||||
{
|
||||
int mid = (low + high) / 2;
|
||||
RecursiveTask<Integer> left = new MaxTask(list, low, mid);
|
||||
RecursiveTask<Integer> right = new MaxTask(list, mid+1, high);
|
||||
right.fork();
|
||||
left.fork();
|
||||
return new Integer(Math.max( left.join().intValue(),
|
||||
right.join().intValue())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user