org.apache.tools.ant.taskdefsClass Parallel
- java.lang.Object
- org.apache.tools.ant.ProjectComponent
- org.apache.tools.ant.Task
- org.apache.tools.ant.taskdefs.Parallel
- All Implemented Interfaces:
- java.lang.Cloneable, TaskContainer
public class Parallel extends Task implements TaskContainerExecutes the contained tasks in separate threads, continuing once all are completed.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 specifyingthreadCount
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).
- Since:
- Ant 1.4
Nested Class Summary
Nested Classes Modifier and Type Class and Description static class
Parallel.TaskList
Class which holds a list of tasks to execute
Field Summary
Fields inherited from class org.apache.tools.ant.ProjectComponent
description, location, project
Constructor Summary
Constructors Constructor and Description Parallel()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description void
addDaemons(Parallel.TaskList daemonTasks)
Add a group of daemon threadsvoid
addTask(Task nestedTask)
Add a nested task to execute in parallel.void
execute()
Execute the parallel tasksvoid
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 (viajava.lang.Runtime.availableProcessors()
).void
setTimeout(long timeout)
Sets the timeout on this set of tasks.
Methods inherited from class org.apache.tools.ant.Task
bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType
Methods inherited from class org.apache.tools.ant.ProjectComponent
clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject
Method Detail
addDaemons
public void addDaemons(Parallel.TaskList daemonTasks)Add a group of daemon threads
- Parameters:
daemonTasks
- The tasks to be executed as daemon.
setPollInterval
public void setPollInterval(int pollInterval)Interval to poll for completed threads when threadCount or threadsPerProcessor is specified. Integer in milliseconds.; optional
- Parameters:
pollInterval
- New value of property pollInterval.
setFailOnAny
public void setFailOnAny(boolean failOnAny)Control whether a failure in a nested task halts execution. Note that the task will complete but existing threads will continue to run - they are not stopped
- Parameters:
failOnAny
- if true any nested task failure causes parallel to complete.
addTask
public void addTask(Task nestedTask)Add a nested task to execute in parallel.
- Specified by:
addTask
in interfaceTaskContainer
- Parameters:
nestedTask
- Nested task to be executed in parallel
setThreadsPerProcessor
public void setThreadsPerProcessor(int numThreadsPerProcessor)Dynamically generates the number of threads to execute based on the number of available processors (viajava.lang.Runtime.availableProcessors()
). Will overwrite the value set in threadCount; optional
- Parameters:
numThreadsPerProcessor
- Number of threads to create per available processor.
setThreadCount
public void setThreadCount(int numThreads)Statically determine the maximum number of tasks to execute simultaneously. If there are less tasks than threads then all will be executed at once, if there are more then onlythreadCount
tasks will be executed at one time. IfthreadsPerProcessor
is set then this value is ignored.; optional
- Parameters:
numThreads
- total number of threads.
setTimeout
public void setTimeout(long timeout)Sets the timeout on this set of tasks. If the timeout is reached before the other threads complete, the execution of this task completes with an exception. Note that existing threads continue to run.
- Parameters:
timeout
- timeout in milliseconds.
execute
public void execute() throws BuildExceptionExecute the parallel tasks
- Overrides:
execute
in classTask
- Throws:
BuildException
- if any of the threads failed.