一、概述
parallel是Ant内置任务,用于并行执行嵌套任务, 但不保证线程安全,每个任务都将在其自己的线程中运行。parallel主要任务用于执行外部程序,如服务器应用程序,以及JUnit或TestNG测试套件。任何有效的Ant任务都可以被嵌入到一个并行任务中,包括其他并行任务,尽管不能保证任务在这样的环境中是线程安全的。当并行任务中的任务正在运行时,主线程将被阻塞,等待所有子线程完成。如果执行因超时或者failonany设置为true时嵌套任务失败而终止,parallel不会等待其他线程中的嵌套的任务完成而完成任务。如果没有设置failonany,任何嵌套的任务失败,其他线程中的嵌套任务会继续执行,直到所有线程都完成执行。parallel可以与sequential任务组合来定义并行块内每个线程上任务指定的顺序。
二、属性
threadCount:使用的最大线程数。如果不设置,所有子任务立即执行。否则并发执行任务数不会超过此值。每个任务按照给定的顺序启动,但不保证任务执行的速度及任务完成的顺序。只能保证每个任务都在它之后的任务之前启动。
threadsPerProcessor:每个可用处理器最多可使用的线程数(Java1.4+),如果在低于java1.4的JVM上设置此值,此值将作用于threadCount属性。
timeout:超时时间毫秒数。
failonany:如果设置为true,当任何嵌套的任务失败,无需等待其他的嵌套任务完成,parallel任务在此时完成。
parallel支持嵌套元素daemons。是要在并行守护线程中运行的任务列表,并行任务不会等待这些任务完成。在并行任务完成之前发生的守护线程的故障将被报告,并且可能导致并行抛出异常。
三、简单示例
<project>
<parallel>
<echo>test1</echo>
<echo>test2</echo>
<echo>test3</echo>
<echo>test4</echo>
</parallel>
</project>