public class Parallel extends Task implements TaskContainer
New behavior allows for the ant script to specify a maximum number of
threads that will be executed in parallel. One should be very careful about
using the waitFor
task when specifying threadCount
as it can cause deadlocks if the number of threads is too small or if one of
the nested tasks fails to execute completely. The task selection algorithm
will insure that the tasks listed before a task have started before that
task is started, but it will not insure a successful completion of those
tasks or that those tasks will finish first (i.e. it's a classic race
condition).
Modifier and Type | Class and Description |
---|---|
static class |
Parallel.TaskList
Class which holds a list of tasks to execute
|
description, location, project
Constructor and Description |
---|
Parallel() |
Modifier and Type | Method and Description |
---|---|
void |
addDaemons(Parallel.TaskList daemonTasks)
Add a group of daemon threads
|
void |
addTask(Task nestedTask)
Add a nested task to execute in parallel.
|
void |
execute()
Execute the parallel tasks
|
void |
setFailOnAny(boolean failOnAny)
Control whether a failure in a nested task halts execution.
|
void |
setPollInterval(int pollInterval)
Interval to poll for completed threads when threadCount or
threadsPerProcessor is specified.
|
void |
setThreadCount(int numThreads)
Statically determine the maximum number of tasks to execute
simultaneously.
|
void |
setThreadsPerProcessor(int numThreadsPerProcessor)
Dynamically generates the number of threads to execute based on the
number of available processors (via
java.lang.Runtime.availableProcessors() ). |
void |
setTimeout(long timeout)
Sets the timeout on this set of tasks.
|
bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType
clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject
public void addDaemons(Parallel.TaskList daemonTasks)
daemonTasks
- The tasks to be executed as daemon.public void setPollInterval(int pollInterval)
pollInterval
- New value of property pollInterval.public void setFailOnAny(boolean failOnAny)
failOnAny
- if true any nested task failure causes parallel to
complete.public void addTask(Task nestedTask)
addTask
in interface TaskContainer
nestedTask
- Nested task to be executed in parallelpublic void setThreadsPerProcessor(int numThreadsPerProcessor)
java.lang.Runtime.availableProcessors()
).
Will overwrite the value set in threadCount; optionalnumThreadsPerProcessor
- Number of threads to create per available
processor.public void setThreadCount(int numThreads)
threadCount
tasks will be executed at one time. If threadsPerProcessor
is set then this value is
ignored.; optionalnumThreads
- total number of threads.public void setTimeout(long timeout)
timeout
- timeout in milliseconds.public void execute() throws BuildException
execute
in class Task
BuildException
- if any of the threads failed.