Question: public class ParaT 2 0 2 3 extends RecursiveTask { int lo , hi , val; int [ ] arr; static final int CUT =

public class ParaT2023 extends RecursiveTask {
int lo, hi, val;
int[] arr;
static final int CUT=5;
ParaT2023(int[] a, int l, int h, int v){ lo=l; hi=h; arr=a; val=v;}
protected Integer compute(){
if((hi-lo)< CUT){
int ans =-1;
for(int i=(lo+1); i < hi; i++){
if ( arr[i]==val) ans=i;
}
return ans;
}
else {
ParaT2023 left = new ParaT2023(arr,lo,(hi+lo)/2,val);
ParaT2023 right= new ParaT2023(arr,(hi+lo)/2,hi,val);
left.fork();
int rightAns = right.compute();
int leftAns = left.join();
if (rightAns>-1) return rightAns;
return leftAns;
}}
public static void main(String[] args) throws Exception {
int [] arr ={0,1,2,3,4,5,0,7,8,0,10,11,12,13,14,15,0,17,18,19,20};
final ForkJoinPool fjPool = ForkJoinPool.commonPool();
int ans = fjPool.invoke(new ParaT2023(arr,0,arr.length,0));
System.out.println(ans);
}}// How would i determine the number of threads used to execute this code which is apparently 4, and how would i determine the output if it is 16.

Step by Step Solution

3.34 Rating (148 Votes )

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock

Heres how you can modify your main method to print the number of threads used public static void mai... View full answer

blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!