Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.tectonica.util;
  
  
  public class StressExecutor extends RecursiveAction
  {
  	private static final long serialVersionUID = 1L;
 
 	public static abstract class StressRunnable
 	{
 		public abstract void run(int indexint threadNo);
 
 		public void preSlice(int fromint toint threadNo)
 		{}
 
 		public void postSlice(int fromint toint threadNo)
 		{}
 	}
 
 	private static class GlobalParams
 	{
 		private final int maxThreads;
 		private final int maxSliceSize;
 		private final StressRunnable runnable;
 
 		public GlobalParams(int maxThreadsint maxSliceSizeStressRunnable runnable)
 		{
 			this. = maxThreads;
 			this. = maxSliceSize;
 			this. = runnable;
 		}
 
 		private AtomicInteger seq = new AtomicInteger(0);
 
 		public int nextSeq()
 		{
 			return .incrementAndGet();
 		}
 	}
 
 	private static class SliceParams
 	{
 		private final int from;
 		private final int to;
 
 		public SliceParams(int fromint to)
 		{
 			this. = from;
 			this. = to;
 		}
 	}
 
 	private GlobalParams config;
 	private SliceParams slice;

external constructor for invocation by the user
 
 	public StressExecutor(int fromint toint maxThreadsint maxSliceSizeStressRunnable runnable)
 	{
 		 = new SliceParams(fromto);
 		 = new GlobalParams(maxThreadsmaxSliceSizerunnable);
 	}

internal constructor for the forks
 
 	private StressExecutor(SliceParams sliceGlobalParams config)
 	{
 		this. = slice;
 		this. = config;
 	}
 
 	public void execute()
 	{
 		pool.invoke(this);
 	}
 
 	protected void compute()
 	{
 		int length = . - .;
 		if (length <= .)
 		{
 		}
 		else
 		{
 			int mid = . + (length / 2);
 			StressExecutor leftSlice = new StressExecutor(new SliceParams(.mid), );
 			StressExecutor rightSlice = new StressExecutor(new SliceParams(mid.), );
 			invokeAll(leftSlicerightSlice);
 		}
 	}
 
 	private void computeSlice(int threadNo)
	{
		int from = .;
		int to = .;
		runnable.preSlice(fromtothreadNo);
		for (int index = fromindex < toindex++)
			runnable.run(indexthreadNo);
		runnable.postSlice(fromtothreadNo);
	}
New to GrepCode? Check out our FAQ X