Class ParallelRegion
- Direct Known Subclasses:
 BornGradRegion,BornRadiiRegion,BulkSolventList,ConnollyRegion,DirectRegion,DispersionRegion,DistanceRegion,EnergyRegion,EnergyTermRegion,ExpandInducedDipolesRegion,GKEnergyRegion,GoldsteinPairRegion,HydrophobicPMFRegion,InducedDipoleFieldReduceRegion,InducedDipoleFieldRegion,InducedGKFieldRegion,InitializationRegion,InitializationRegion,KillRegion,NeighborList,OPTRegion,PermanentFieldRegion,PermanentGKFieldRegion,PolarizationEnergyRegion,RealSpaceEnergyRegion,ReciprocalEnergyRegion,ReciprocalSpace.BSplineRegion,ReduceRegion,RowRegion,SliceRegion,SORRegion,SpatialDensityRegion,SurfaceAreaRegion
 To execute a parallel region, create a ParallelTeam object;
 create an instance of a concrete subclass of class ParallelRegion; and pass
 this instance to the parallel team's execute() method. You can do
 all this using an anonymous inner class; for example:
 
     new ParallelTeam().execute (new ParallelRegion()
         {
         // Shared variable declarations
         . . .
         public void start()
             {
             // Initialization code
             . . .
             }
         public void run()
             {
             // Thread private variable declarations
             // Parallel code
             . . .
             }
         public void finish()
             {
             // Finalization code
             . . .
             }
         });
 
 
 The parallel team's execute() method does the following. The
 parallel team has a certain number of threads K, where K was
 specified when the parallel team was constructed. The main thread is the
 thread calling the parallel team's execute() method. The main thread
 calls the parallel region's start() method. When the
 start() method returns, all the team threads call the parallel
 region's run() method concurrently. When all the team threads have
 returned from the run() method, the main thread calls the parallel
 region's finish() method. When the finish() method returns,
 the main thread returns from the parallel team's execute() method.
 
 Variables to be shared by all threads in the team may be declared as fields
 of the ParallelRegion subclass. The start() method is intended for
 performing initialization in a single thread before parallel execution
 begins. If no such initialization is needed, omit the start()
 method. The run() method contains code to be executed in parallel by
 all threads in the team. Variables that are private to each thread may be
 declared inside the run() method. The finish() method is
 intended for performing finalization in a single thread after parallel
 execution ends. If no such finalization is needed, omit the finish()
 method.
 
 If the parallel region's start() method throws an exception, the
 parallel team's execute() method throws that same exception, and the
 run() method is not called.
 
 If the parallel region's run() method throws an exception in one of
 the team threads, the exception's stack trace is printed on the standard
 error, the parallel team waits until all the other team threads have returned
 from the run() method, then the parallel team's execute()
 method throws that same exception, and the parallel region's
 finish() method is not called. If the parallel region's
 run() method throws an exception in more than one of the team
 threads, each exception's stack trace is printed on the standard error, the
 parallel team waits until all the other team threads have returned from the
 run() method, then the parallel team's execute() method
 throws a MultipleParallelException wrapping all the thrown
 exceptions, and the parallel region's finish() method is not called.
 
 If the parallel region's finish() method throws an exception, the
 parallel team's execute() method throws that same exception.
- Version:
 - 11-Nov-2007
 - Author:
 - Alan Kaminsky
 
- 
Constructor Summary
Constructors - 
Method Summary
Modifier and TypeMethodDescriptionfinal voidbarrier()Perform a barrier.final voidbarrier(BarrierAction action) Perform a barrier, with a barrier action.final voidcritical(Lock theLock, ParallelSection theSection) Perform a section of code in a critical region with exclusive locking using the given lock.final voidcritical(ParallelSection theSection) Perform a section of code in a critical region with exclusive locking.final voidcriticalNonexclusive(Lock theLock, ParallelSection theSection) Perform a section of code in a critical region with nonexclusive locking using the given lock.final voidcriticalNonexclusive(ParallelSection theSection) Perform a section of code in a critical region with nonexclusive locking.final voidexecute(int first, int last, int stride, IntegerStrideForLoop theLoop) Execute a parallel for loop within this parallel region.final voidexecute(int first, int last, int stride, IntegerStrideForLoop theLoop, BarrierAction action) Execute a parallel for loop within this parallel region.final voidexecute(int first, int last, IntegerForLoop theLoop) Execute a parallel for loop within this parallel region.final voidexecute(int first, int last, IntegerForLoop theLoop, BarrierAction action) Execute a parallel for loop within this parallel region.final voidexecute(long first, long last, long stride, LongStrideForLoop theLoop) Execute a parallel for loop within this parallel region.final voidexecute(long first, long last, long stride, LongStrideForLoop theLoop, BarrierAction action) Execute a parallel for loop within this parallel region.final voidexecute(long first, long last, LongForLoop theLoop) Execute a parallel for loop within this parallel region.final voidexecute(long first, long last, LongForLoop theLoop, BarrierAction action) Execute a parallel for loop within this parallel region.final voidexecute(ParallelSection section) Execute a parallel section within this parallel region.final voidexecute(ParallelSection[] sections) Execute a group of parallel sections concurrently within this parallel region.final voidexecute(ParallelSection[] sections, BarrierAction action) Execute a group of parallel sections concurrently within this parallel region.final voidexecute(ParallelSection section, BarrierAction action) Execute a parallel section within this parallel region.final voidexecute(ParallelSection section1, ParallelSection section2) Execute a group of two parallel sections concurrently within this parallel region.final voidexecute(ParallelSection section1, ParallelSection section2, BarrierAction action) Execute a group of two parallel sections concurrently within this parallel region.final voidexecute(ParallelSection section1, ParallelSection section2, ParallelSection section3) Execute a group of three parallel sections concurrently within this parallel region.final voidexecute(ParallelSection section1, ParallelSection section2, ParallelSection section3, BarrierAction action) Execute a group of three parallel sections concurrently within this parallel region.final <T> voidexecute(Iterable<T> theIterable, ParallelIteration<T> theIteration) Execute a parallel iteration within this parallel region.final <T> voidexecute(Iterable<T> theIterable, ParallelIteration<T> theIteration, BarrierAction action) Execute a parallel iteration within this parallel region.final <T> voidexecute(Iterator<T> theIterator, ParallelIteration<T> theIteration) Execute a parallel iteration within this parallel region.final <T> voidexecute(Iterator<T> theIterator, ParallelIteration<T> theIteration, BarrierAction action) Execute a parallel iteration within this parallel region.final <T> voidexecute(T[] theArray, ParallelIteration<T> theIteration) Execute a parallel iteration within this parallel region.final <T> voidexecute(T[] theArray, ParallelIteration<T> theIteration, BarrierAction action) Execute a parallel iteration within this parallel region.voidfinish()Perform finalization actions after parallel execution ends.abstract voidrun()Execute parallel code.voidstart()Perform initialization actions before parallel execution begins.Methods inherited from class edu.rit.pj.ParallelConstruct
getThreadCount, getThreadIndex, isExecutingInParallel, region, team 
- 
Constructor Details
- 
ParallelRegion
public ParallelRegion()Construct a new parallel region. 
 - 
 - 
Method Details
- 
start
Perform initialization actions before parallel execution begins. Only one thread calls thestart()method.The
start()method may be overridden in a subclass. If not overridden, thestart()method does nothing. - 
run
Execute parallel code. All threads of the parallel team call therun()method concurrently.The
run()method must be implemented in a subclass. - 
finish
Perform finalization actions after parallel execution ends. Only one thread calls thefinish()method.The
finish()method may be overridden in a subclass. If not overridden, thefinish()method does nothing. - 
execute
Execute a parallel for loop within this parallel region. For further information, see class IntegerForLoop. The loop index goes fromfirst(inclusive) tolast(inclusive) in steps of +1. Iffirstis greater thanlast, then no loop iterations are performed. At the end of the parallel for loop, the parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 first- First loop index.last- Last loop index.theLoop- Parallel for loop.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheLoopis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheLoop's methods throws an exception.Exception- if any.
 - 
execute
public final void execute(int first, int last, IntegerForLoop theLoop, BarrierAction action) throws Exception Execute a parallel for loop within this parallel region. For further information, see class IntegerForLoop. The loop index goes fromfirst(inclusive) tolast(inclusive) in steps of +1. Iffirstis greater thanlast, then no loop iterations are performed. At the end of the parallel for loop, the parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 first- First loop index.last- Last loop index.theLoop- Parallel for loop.action- Barrier action.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheLoopis null. Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheLoop's methods throws an exception.Exception- if any.
 - 
execute
public final void execute(int first, int last, int stride, IntegerStrideForLoop theLoop) throws Exception Execute a parallel for loop within this parallel region. For further information, see class IntegerStrideForLoop. The loop index goes fromfirst(inclusive) tolast(inclusive) in steps ofstride. The stride must be positive. Iffirstis greater thanlast, then no loop iterations are performed. At the end of the parallel for loop, the parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 first- First loop index.last- Last loop index.stride- Loop index stride, >= 1.theLoop- Parallel for loop.- Throws:
 IllegalArgumentException- (unchecked exception) Thrown ifstride< 1.NullPointerException- (unchecked exception) Thrown iftheLoopis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheLoop's methods throws an exception.Exception- if any.
 - 
execute
public final void execute(int first, int last, int stride, IntegerStrideForLoop theLoop, BarrierAction action) throws Exception Execute a parallel for loop within this parallel region. For further information, see class IntegerStrideForLoop. The loop index goes fromfirst(inclusive) tolast(inclusive) in steps ofstride. The stride must be positive. Iffirstis greater thanlast, then no loop iterations are performed. At the end of the parallel for loop, the parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 first- First loop index.last- Last loop index.stride- Loop index stride, >= 1.theLoop- Parallel for loop.action- Barrier action.- Throws:
 IllegalArgumentException- (unchecked exception) Thrown ifstride< 1.NullPointerException- (unchecked exception) Thrown iftheLoopis null. Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheLoop's methods throws an exception.Exception- if any.
 - 
execute
Execute a parallel for loop within this parallel region. For further information, see class LongForLoop. The loop index goes fromfirst(inclusive) tolast(inclusive) in steps of +1. Iffirstis greater thanlast, then no loop iterations are performed. At the end of the parallel for loop, the parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 first- First loop index.last- Last loop index.theLoop- Parallel for loop.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheLoopis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheLoop's methods throws an exception.Exception- if any.
 - 
execute
public final void execute(long first, long last, LongForLoop theLoop, BarrierAction action) throws Exception Execute a parallel for loop within this parallel region. For further information, see class LongForLoop. The loop index goes fromfirst(inclusive) tolast(inclusive) in steps of +1. Iffirstis greater thanlast, then no loop iterations are performed. At the end of the parallel for loop, the parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 first- First loop index.last- Last loop index.theLoop- Parallel for loop.action- Barrier action.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheLoopis null. Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheLoop's methods throws an exception.Exception- if any.
 - 
execute
public final void execute(long first, long last, long stride, LongStrideForLoop theLoop) throws Exception Execute a parallel for loop within this parallel region. For further information, see class LongStrideForLoop. The loop index goes fromfirst(inclusive) tolast(inclusive) in steps ofstride. The stride must be positive. Iffirstis greater thanlast, then no loop iterations are performed. At the end of the parallel for loop, the parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 first- First loop index.last- Last loop index.stride- Loop index stride, >= 1.theLoop- Parallel for loop.- Throws:
 IllegalArgumentException- (unchecked exception) Thrown ifstride< 1.NullPointerException- (unchecked exception) Thrown iftheLoopis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheLoop's methods throws an exception.Exception- if any.
 - 
execute
public final void execute(long first, long last, long stride, LongStrideForLoop theLoop, BarrierAction action) throws Exception Execute a parallel for loop within this parallel region. For further information, see class LongStrideForLoop. The loop index goes fromfirst(inclusive) tolast(inclusive) in steps ofstride. The stride must be positive. Iffirstis greater thanlast, then no loop iterations are performed. At the end of the parallel for loop, the parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 first- First loop index.last- Last loop index.stride- Loop index stride, >= 1.theLoop- Parallel for loop.action- Barrier action.- Throws:
 IllegalArgumentException- (unchecked exception) Thrown ifstride< 1.NullPointerException- (unchecked exception) Thrown iftheLoopis null. Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheLoop's methods throws an exception.Exception- if any.
 - 
execute
Execute a parallel iteration within this parallel region. For further information, see class ParallelIteration. The items processed by the iteration are the elements of the given array. The iteration order is from index 0 upwards. At the end of the parallel iteration, the parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Type Parameters:
 T- Data type of the items iterated over.- Parameters:
 theArray- Array containing the items.theIteration- Parallel iteration.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheArrayis null ortheIterationis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheIteration's methods throws an exception.Exception- if any.
 - 
execute
public final <T> void execute(T[] theArray, ParallelIteration<T> theIteration, BarrierAction action) throws Exception Execute a parallel iteration within this parallel region. For further information, see class ParallelIteration. The items processed by the iteration are the elements of the given array. The iteration order is from index 0 upwards. At the end of the parallel iteration, the parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Type Parameters:
 T- Data type of the items iterated over.- Parameters:
 theArray- Array containing the items.theIteration- Parallel iteration.action- Barrier action.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheArrayis null. Thrown iftheIterationis null. Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheIteration's methods throws an exception.Exception- if any.
 - 
execute
public final <T> void execute(Iterator<T> theIterator, ParallelIteration<T> theIteration) throws Exception Execute a parallel iteration within this parallel region. For further information, see class ParallelIteration. The items processed by the iteration are the items returned by the given iterator. The iteration order is that of the given iterator. At the end of the parallel iteration, the parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Type Parameters:
 T- Data type of the items iterated over.- Parameters:
 theIterator- Iterator over the items.theIteration- Parallel iteration.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheIteratoris null ortheIterationis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheIteration's methods throws an exception.Exception- if any.
 - 
execute
public final <T> void execute(Iterator<T> theIterator, ParallelIteration<T> theIteration, BarrierAction action) throws Exception Execute a parallel iteration within this parallel region. For further information, see class ParallelIteration. The items processed by the iteration are the items returned by the given iterator. The iteration order is that of the given iterator. At the end of the parallel iteration, the parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Type Parameters:
 T- Data type of the items iterated over.- Parameters:
 theIterator- Iterator over the items.theIteration- Parallel iteration.action- Barrier action.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheIteratoris null. Thrown iftheIterationis null. Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheIteration's methods throws an exception.Exception- if any.
 - 
execute
public final <T> void execute(Iterable<T> theIterable, ParallelIteration<T> theIteration) throws Exception Execute a parallel iteration within this parallel region. For further information, see class ParallelIteration. The items processed by the iteration are the items contained in the given iterable collection. The iteration order is that of the given iterable collection's iterator. At the end of the parallel iteration, the parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Type Parameters:
 T- Data type of the items iterated over.- Parameters:
 theIterable- Iterable collection containing the items.theIteration- Parallel iteration.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheIterableis null ortheIterationis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheIteration's methods throws an exception.Exception- if any.
 - 
execute
public final <T> void execute(Iterable<T> theIterable, ParallelIteration<T> theIteration, BarrierAction action) throws Exception Execute a parallel iteration within this parallel region. For further information, see class ParallelIteration. The items processed by the iteration are the items contained in the given iterable collection. The iteration order is that of the given iterable collection's iterator. At the end of the parallel iteration, the parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Type Parameters:
 T- Data type of the items iterated over.- Parameters:
 theIterable- Iterable collection containing the items.theIteration- Parallel iteration.action- Barrier action.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheIterableis null. Thrown iftheIterationis null. Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one oftheIteration's methods throws an exception.Exception- if any.
 - 
execute
Execute a parallel section within this parallel region. The parallel section'srun()method is called by one of the parallel team threads. For further information, see class ParallelSection. At the end of the parallel section, the parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 section- Parallel section.- Throws:
 NullPointerException- (unchecked exception) Thrown ifsectionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if the parallel section'srun()method throws an exception.Exception- if any.
 - 
execute
Execute a parallel section within this parallel region. The parallel section'srun()method is called by one of the parallel team threads. For further information, see class ParallelSection. At the end of the parallel section, the parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 section- Parallel section.action- Barrier action.- Throws:
 NullPointerException- (unchecked exception) Thrown ifsectionis null. Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if the parallel section'srun()method throws an exception.Exception- if any.
 - 
execute
Execute a group of two parallel sections concurrently within this parallel region. Each parallel section'srun()method is called by a different parallel team thread. For further information, see class ParallelSection. At the end of the parallel section group, the parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 section1- First parallel section.section2- Second parallel section.- Throws:
 NullPointerException- (unchecked exception) Thrown ifsection1is null. Thrown ifsection2is null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one of the parallel sections'run()methods throws an exception.Exception- if any.
 - 
execute
public final void execute(ParallelSection section1, ParallelSection section2, BarrierAction action) throws Exception Execute a group of two parallel sections concurrently within this parallel region. Each parallel section'srun()method is called by a different parallel team thread. For further information, see class ParallelSection. At the end of the parallel section group, the parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 section1- First parallel section.section2- Second parallel section.action- Barrier action.- Throws:
 NullPointerException- (unchecked exception) Thrown ifsection1is null. Thrown ifsection2is null. Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one of the parallel sections'run()methods throws an exception.Exception- if any.
 - 
execute
public final void execute(ParallelSection section1, ParallelSection section2, ParallelSection section3) throws Exception Execute a group of three parallel sections concurrently within this parallel region. Each parallel section'srun()method is called by a different parallel team thread. For further information, see class ParallelSection. At the end of the parallel section group, the parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 section1- First parallel section.section2- Second parallel section.section3- Third parallel section.- Throws:
 NullPointerException- (unchecked exception) Thrown ifsection1is null. Thrown ifsection2is null. Thrown ifsection3is null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one of the parallel sections'run()methods throws an exception.Exception- if any.
 - 
execute
public final void execute(ParallelSection section1, ParallelSection section2, ParallelSection section3, BarrierAction action) throws Exception Execute a group of three parallel sections concurrently within this parallel region. Each parallel section'srun()method is called by a different parallel team thread. For further information, see class ParallelSection. At the end of the parallel section group, the parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 section1- First parallel section.section2- Second parallel section.section3- Third parallel section.action- Barrier action.- Throws:
 NullPointerException- (unchecked exception) Thrown ifsection1is null. Thrown ifsection2is null. Thrown ifsection3is null. Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one of the parallel sections'run()methods throws an exception.Exception- if any.
 - 
execute
Execute a group of parallel sections concurrently within this parallel region. Each parallel section'srun()method is called by a different parallel team thread. For further information, see class ParallelSection. At the end of the parallel section group, the parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 sections- Parallel sections.- Throws:
 NullPointerException- (unchecked exception) Thrown if any of thesectionsis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one of the parallel sections'run()methods throws an exception.Exception- if any.
 - 
execute
Execute a group of parallel sections concurrently within this parallel region. Each parallel section'srun()method is called by a different parallel team thread. For further information, see class ParallelSection. At the end of the parallel section group, the parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
execute()method with identical arguments, or none of the threads must call theexecute()method.- Parameters:
 sections- Parallel sections.action- Barrier action.- Throws:
 NullPointerException- (unchecked exception) Thrown if any of thesectionsis null. Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown if one of the parallel sections'run()methods throws an exception.Exception- if any.
 - 
critical
Perform a section of code in a critical region with exclusive locking. The locking is performed using the default lock, a hidden Lock variable shared by all the parallel team threads. The thread calling thecritical()method waits until no other thread is executing a critical region with exclusive locking using the default lock and no other thread is executing a critical region with nonexclusive locking using the default lock. The thread then callstheSection'srun()method with exclusive locking using the default lock. When therun()method returns, the thread unlocks the lock and returns from thecritical()method.If the parallel section's
run()method throws an exception, thecritical()method throws that same exception in the thread that called therun()method (after unlocking the lock).- Parameters:
 theSection- Parallel section to execute in the critical region.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheSectionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown iftheSection'srun()method throws an exception.Exception- if any.
 - 
criticalNonexclusive
Perform a section of code in a critical region with nonexclusive locking. The locking is performed using the default lock, a hidden Lock variable shared by all the parallel team threads. The thread calling thecritical()method waits until no other thread is executing a critical region with exclusive locking using the default lock. However, any number of other threads may be executing a critical region with nonexclusive locking using the default lock. The thread then callstheSection'srun()method with nonexclusive locking using the default lock. When therun()method returns, the thread unlocks the lock and returns from thecritical()method.If the parallel section's
run()method throws an exception, thecritical()method throws that same exception in the thread that called therun()method (after unlocking the lock).- Parameters:
 theSection- Parallel section to execute in the critical region.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheSectionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown iftheSection'srun()method throws an exception.Exception- if any.
 - 
critical
Perform a section of code in a critical region with exclusive locking using the given lock. The thread calling thecritical()method waits until no other thread is executing a critical region with exclusive locking using the given lock and no other thread is executing a critical region with nonexclusive locking using the given lock. The thread then callstheSection'srun()method with exclusive locking using the given lock. When therun()method returns, the thread unlocks the lock and returns from thecritical()method.If the parallel section's
run()method throws an exception, thecritical()method throws that same exception in the thread that called therun()method (after unlocking the lock).- Parameters:
 theLock- Lock.theSection- Parallel section to execute in the critical region.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheLockis null ortheSectionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown iftheSection'srun()method throws an exception.Exception- if any.
 - 
criticalNonexclusive
Perform a section of code in a critical region with nonexclusive locking using the given lock. The thread calling thecritical()method waits until no other thread is executing a critical region with exclusive locking using the given lock. However, any number of other threads may be executing a critical region with nonexclusive locking using the given lock. The thread then callstheSection'srun()method with nonexclusive locking using the given lock. When therun()method returns, the thread unlocks the lock and returns from thecritical()method.If the parallel section's
run()method throws an exception, thecritical()method throws that same exception in the thread that called therun()method (after unlocking the lock).- Parameters:
 theLock- Lock.theSection- Parallel section to execute in the critical region.- Throws:
 NullPointerException- (unchecked exception) Thrown iftheLockis null ortheSectionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown iftheSection'srun()method throws an exception.Exception- if any.
 - 
barrier
public final void barrier()Perform a barrier. The parallel team threads wait for each other at a barrier.Note: Either all threads in the parallel team must call the
barrier()method, or none of the threads must call thebarrier()method.- Throws:
 IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.
 - 
barrier
Perform a barrier, with a barrier action. The parallel team threads encounter a barrier, and their behavior depends on the given BarrierAction.Note: Either all threads in the parallel team must call the
barrier()method, or none of the threads must call thebarrier()method.- Parameters:
 action- Barrier action.- Throws:
 NullPointerException- (unchecked exception) Thrown ifactionis null.IllegalStateException- (unchecked exception) Thrown if no parallel team is executing this parallel region.Exception- Thrown iftheSection'srun()method throws an exception.Exception- if any.
 
 -