org.codehaus.gpars

groovyx.gpars.group
[Groovy] Class PGroup

java.lang.Object
  groovyx.gpars.group.PGroup

abstract class PGroup
extends java.lang.Object

Provides a common super class of pooled parallel groups.

Authors:
Vaclav Pech, Alex Tkachman Date: May 8, 2009


Field Summary
private Pool threadPool

Stores the group actors' thread pool

 
Constructor Summary
protected PGroup(Pool threadPool)

Creates a group for actors, agents, tasks and operators.

 
Method Summary
DefaultActor actor(java.lang.Runnable handler)

Creates a new instance of DefaultActor, using the passed-in runnable/closure as the body of the actor's act() method.

Agent agent(T state)

Creates an agent instance initialized with the given state

Agent agent(T state, groovy.lang.Closure copy)

Creates an agent instance initialized with the given state

BlockingActor blockingActor(java.lang.Runnable handler)

Creates a new instance of BlockingActor, using the passed-in closure as the body of the actor's act() method.

DefaultActor fairActor(java.lang.Runnable handler)

Creates a new instance of DefaultActor, using the passed-in runnable/closure as the body of the actor's act() method.

Agent fairAgent(T state)

Creates an agent instance initialized with the given state, which will cooperate in thread sharing with other agents and actors in a fair manner.

Agent fairAgent(T state, groovy.lang.Closure copy)

Creates an agent instance initialized with the given state, which will cooperate in thread sharing with other agents and actors in a fair manner.

Actor fairMessageHandler(groovy.lang.Closure code)

Creates an instance of DynamicDispatchActor, which will cooperate in thread sharing with other actors sharing the same thread pool

Actor fairReactor(groovy.lang.Closure code)

Creates a reactor around the supplied code, which will cooperate in thread sharing with other actors sharing the same thread pool When a reactor receives a message, the supplied block of code is run with the message as a parameter and the result of the code is send in reply.

protected void finalize()

Shutdown the thread pool gracefully

Pool getThreadPool()

Actor messageHandler(groovy.lang.Closure code)

Creates an instance of DynamicDispatchActor.

DataflowProcessor operator(java.util.Map channels, groovy.lang.Closure code)

Creates an operator using the current parallel group

DataflowProcessor operator(java.util.List inputChannels, java.util.List outputChannels, groovy.lang.Closure code)

Creates an operator using the current parallel group

DataflowProcessor operator(java.util.List inputChannels, java.util.List outputChannels, int maxForks, groovy.lang.Closure code)

Creates an operator using the current parallel group

DataflowProcessor operator(DataflowReadChannel input, DataflowWriteChannel output, groovy.lang.Closure code)

Creates an operator using the current parallel group

DataflowProcessor operator(DataflowReadChannel input, DataflowWriteChannel output, int maxForks, groovy.lang.Closure code)

Creates an operator using the current parallel group

DataflowProcessor prioritySelector(java.util.Map channels, groovy.lang.Closure code)

Creates a prioritizing selector using the default dataflow parallel group Input with lower position index have higher priority.

DataflowProcessor prioritySelector(java.util.List inputChannels, java.util.List outputChannels, groovy.lang.Closure code)

Creates a prioritizing selector using the default dataflow parallel group Input with lower position index have higher priority.

DataflowProcessor prioritySelector(java.util.Map channels)

Creates a prioritizing selector using the default dataflow parallel group.

DataflowProcessor prioritySelector(java.util.List inputChannels, java.util.List outputChannels)

Creates a prioritizing selector using the default dataflow parallel group.

Actor reactor(groovy.lang.Closure code)

Creates a reactor around the supplied code.

Select select(DataflowReadChannel channels)

Creates a select using the current parallel group.

Select select(java.util.List channels)

Creates a select using the current parallel group.

DataflowProcessor selector(java.util.Map channels, groovy.lang.Closure code)

Creates a selector using this parallel group

DataflowProcessor selector(java.util.List inputChannels, java.util.List outputChannels, groovy.lang.Closure code)

Creates a selector using this parallel group

DataflowProcessor selector(java.util.Map channels)

Creates a selector using this parallel group.

DataflowProcessor selector(java.util.List inputChannels, java.util.List outputChannels)

Creates a selector using this parallel group.

DataflowProcessor splitter(DataflowReadChannel inputChannel, java.util.List outputChannels)

Creates a splitter copying its single input channel into all of its output channels.

DataflowProcessor splitter(DataflowReadChannel inputChannel, java.util.List outputChannels, int maxForks)

Creates a splitter copying its single input channel into all of its output channels.

DataflowVariable task(groovy.lang.Closure code)

Creates a new task assigned to a thread from the current parallel group.

DataflowVariable task(java.util.concurrent.Callable callable)

Creates a new task assigned to a thread from the current parallel group.

DataflowVariable task(java.lang.Runnable code)

Creates a new task assigned to a thread from the current parallel group.

 
Methods inherited from class java.lang.Object
java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#wait(long, int), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()
 

Field Detail

threadPool

@Delegate
private Pool threadPool
Stores the group actors' thread pool


 
Constructor Detail

PGroup

protected PGroup(Pool threadPool)
Creates a group for actors, agents, tasks and operators. The actors will share a common daemon thread pool.


 
Method Detail

actor

final DefaultActor actor(java.lang.Runnable handler)
Creates a new instance of DefaultActor, using the passed-in runnable/closure as the body of the actor's act() method. The created actor will belong to the pooled parallel group.
Parameters:
handler - The body of the newly created actor's act method.
Returns:
A newly created instance of the DefaultActor class


agent

final Agent agent(T state)
Creates an agent instance initialized with the given state
Parameters:
state - The initial internal state of the new Agent instance
Returns:
The created instance


agent

final Agent agent(T state, groovy.lang.Closure copy)
Creates an agent instance initialized with the given state
Parameters:
state - The initial internal state of the new Agent instance
copy - A closure to use to create a copy of the internal state when sending the internal state out
Returns:
The created instance


blockingActor

final BlockingActor blockingActor(java.lang.Runnable handler)
Creates a new instance of BlockingActor, using the passed-in closure as the body of the actor's act() method. The created actor will be part of the default actor group.
Parameters:
handler - The body of the newly created actor's act method.
Returns:
A newly created instance of the BlockingActor class


fairActor

final DefaultActor fairActor(java.lang.Runnable handler)
Creates a new instance of DefaultActor, using the passed-in runnable/closure as the body of the actor's act() method. The actor will cooperate in thread sharing with other actors sharing the same thread pool in a fair manner. The created actor will belong to the pooled parallel group.
Parameters:
handler - The body of the newly created actor's act method.
Returns:
A newly created instance of the DefaultActor class


fairAgent

final Agent fairAgent(T state)
Creates an agent instance initialized with the given state, which will cooperate in thread sharing with other agents and actors in a fair manner.
Parameters:
state - The initial internal state of the new Agent instance
Returns:
The created instance


fairAgent

final Agent fairAgent(T state, groovy.lang.Closure copy)
Creates an agent instance initialized with the given state, which will cooperate in thread sharing with other agents and actors in a fair manner.
Parameters:
copy - A closure to use to create a copy of the internal state when sending the internal state out
state - The initial internal state of the new Agent instance
Returns:
The created instance


fairMessageHandler

final Actor fairMessageHandler(groovy.lang.Closure code)
Creates an instance of DynamicDispatchActor, which will cooperate in thread sharing with other actors sharing the same thread pool
Parameters:
code - The closure specifying individual message handlers.


fairReactor

final Actor fairReactor(groovy.lang.Closure code)
Creates a reactor around the supplied code, which will cooperate in thread sharing with other actors sharing the same thread pool When a reactor receives a message, the supplied block of code is run with the message as a parameter and the result of the code is send in reply.
Parameters:
The - code to invoke for each received message
Returns:
A new instance of ReactiveEventBasedThread


finalize

protected void finalize()
Shutdown the thread pool gracefully


getThreadPool

Pool getThreadPool()


messageHandler

final Actor messageHandler(groovy.lang.Closure code)
Creates an instance of DynamicDispatchActor.
Parameters:
code - The closure specifying individual message handlers.


operator

DataflowProcessor operator(java.util.Map channels, groovy.lang.Closure code)
Creates an operator using the current parallel group
Parameters:
channels - A map specifying "inputs" and "outputs" - dataflow channels (instances of the DataflowQueue or DataflowVariable classes) to use for inputs and outputs
code - The operator's body to run each time all inputs have a value to read


operator

DataflowProcessor operator(java.util.List inputChannels, java.util.List outputChannels, groovy.lang.Closure code)
Creates an operator using the current parallel group
Parameters:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output
code - The operator's body to run each time all inputs have a value to read
Returns:
A new active operator instance


operator

DataflowProcessor operator(java.util.List inputChannels, java.util.List outputChannels, int maxForks, groovy.lang.Closure code)
Creates an operator using the current parallel group
Parameters:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output
maxForks - Number of parallel threads running operator's body, defaults to 1
code - The operator's body to run each time all inputs have a value to read
Returns:
A new active operator instance


operator

DataflowProcessor operator(DataflowReadChannel input, DataflowWriteChannel output, groovy.lang.Closure code)
Creates an operator using the current parallel group
Parameters:
input - a dataflow channel to use for input
output - a dataflow channel to use for output
code - The operator's body to run each time all inputs have a value to read


operator

DataflowProcessor operator(DataflowReadChannel input, DataflowWriteChannel output, int maxForks, groovy.lang.Closure code)
Creates an operator using the current parallel group
Parameters:
input - a dataflow channel to use for input
output - a dataflow channel to use for output
maxForks - Number of parallel threads running operator's body, defaults to 1
code - The operator's body to run each time all inputs have a value to read


prioritySelector

DataflowProcessor prioritySelector(java.util.Map channels, groovy.lang.Closure code)
Creates a prioritizing selector using the default dataflow parallel group Input with lower position index have higher priority.
Parameters:
channels - A map specifying "inputs" and "outputs" - dataflow channels (instances of the DataflowQueue or DataflowVariable classes) to use for inputs and outputs
code - The selector's body to run each time a value is available in any of the inputs channels


prioritySelector

DataflowProcessor prioritySelector(java.util.List inputChannels, java.util.List outputChannels, groovy.lang.Closure code)
Creates a prioritizing selector using the default dataflow parallel group Input with lower position index have higher priority.
Parameters:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output
code - The selector's body to run each time a value is available in any of the inputs channels


prioritySelector

DataflowProcessor prioritySelector(java.util.Map channels)
Creates a prioritizing selector using the default dataflow parallel group. Since no body is provided, the selector will simply copy the incoming values to all output channels. Input with lower position index have higher priority.
Parameters:
channels - A map specifying "inputs" and "outputs" - dataflow channels (instances of the DataflowQueue or DataflowVariable classes) to use for inputs and outputs


prioritySelector

DataflowProcessor prioritySelector(java.util.List inputChannels, java.util.List outputChannels)
Creates a prioritizing selector using the default dataflow parallel group. Since no body is provided, the selector will simply copy the incoming values to all output channels. Input with lower position index have higher priority.
Parameters:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output


reactor

final Actor reactor(groovy.lang.Closure code)
Creates a reactor around the supplied code. When a reactor receives a message, the supplied block of code is run with the message as a parameter and the result of the code is send in reply.
Parameters:
The - code to invoke for each received message
Returns:
A new instance of ReactiveEventBasedThread


select

Select select(DataflowReadChannel channels)
Creates a select using the current parallel group. The returns Select instance will allow the user to obtain values from the supplied dataflow variables or streams as they become available.
Parameters:
channels - Dataflow variables or streams to wait for values on


select

Select select(java.util.List channels)
Creates a select using the current parallel group. The returns Select instance will allow the user to obtain values from the supplied dataflow variables or streams as they become available.
Parameters:
channels - Dataflow variables or streams to wait for values on


selector

DataflowProcessor selector(java.util.Map channels, groovy.lang.Closure code)
Creates a selector using this parallel group
Parameters:
channels - A map specifying "inputs" and "outputs" - dataflow channels (instances of the DataflowQueue or DataflowVariable classes) to use for inputs and outputs
code - The selector's body to run each time a value is available in any of the inputs channels


selector

DataflowProcessor selector(java.util.List inputChannels, java.util.List outputChannels, groovy.lang.Closure code)
Creates a selector using this parallel group
Parameters:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output
code - The selector's body to run each time a value is available in any of the inputs channels


selector

DataflowProcessor selector(java.util.Map channels)
Creates a selector using this parallel group. Since no body is provided, the selector will simply copy the incoming values to all output channels.
Parameters:
channels - A map specifying "inputs" and "outputs" - dataflow channels (instances of the DataflowQueue or DataflowVariable classes) to use for inputs and outputs
code - The selector's body to run each time a value is available in any of the inputs channels


selector

DataflowProcessor selector(java.util.List inputChannels, java.util.List outputChannels)
Creates a selector using this parallel group. Since no body is provided, the selector will simply copy the incoming values to all output channels.
Parameters:
inputChannels - dataflow channels to use for input
outputChannels - dataflow channels to use for output
code - The selector's body to run each time a value is available in any of the inputs channels


splitter

DataflowProcessor splitter(DataflowReadChannel inputChannel, java.util.List outputChannels)
Creates a splitter copying its single input channel into all of its output channels. The created splitter will be part of this parallel group Input with lower position index have higher priority.
Parameters:
inputChannel - The channel to read values from
outputChannels - A list of channels to output to


splitter

DataflowProcessor splitter(DataflowReadChannel inputChannel, java.util.List outputChannels, int maxForks)
Creates a splitter copying its single input channel into all of its output channels. The created splitter will be part of this parallel group Input with lower position index have higher priority.
Parameters:
inputChannel - The channel to read values from
outputChannels - A list of channels to output to
maxForks - Number of threads running the splitter's body, defaults to 1


task

DataflowVariable task(groovy.lang.Closure code)
Creates a new task assigned to a thread from the current parallel group. Tasks are a lightweight version of dataflow operators, which do not define their communication channels explicitly, but can only exchange data using explicit DataflowVariables and Streams. Registers itself with Dataflow for nested 'whenBound' handlers to use the same group.
Parameters:
code - The task body to run
Returns:
A DataflowVariable, which gets assigned the value returned from the supplied code


task

DataflowVariable task(java.util.concurrent.Callable callable)
Creates a new task assigned to a thread from the current parallel group. Tasks are a lightweight version of dataflow operators, which do not define their communication channels explicitly, but can only exchange data using explicit DataflowVariables and Streams. Registers itself with Dataflow for nested 'whenBound' handlers to use the same group.
Parameters:
callable - The task body to run
Returns:
A DataflowVariable, which gets assigned the value returned from the supplied code


task

DataflowVariable task(java.lang.Runnable code)
Creates a new task assigned to a thread from the current parallel group. Tasks are a lightweight version of dataflow operators, which do not define their communication channels explicitly, but can only exchange data using explicit DataflowVariables and Streams. Registers itself with Dataflow for nested 'whenBound' handlers to use the same group.
Parameters:
code - The task body to run
Returns:
A DataflowVariable, which gets bound to null once the supplied code finishes


 

Copyright © 2008–2010 Václav Pech. All Rights Reserved.