Thomas, Before you continue with the multithreading of tasks, you may want to read the following thread.
http://marc.theaimsgroup.com/?t=96952057200006&w=2&r=1 I am pretty sure there is likely to be some adverse interactions between running tasks in multiple threads and the management of System.out. For example, running two non-forked <java> tasks, which both send the output to a file, will result in both trying to set System.out, one possibly writing into another's output file and possibly System.out not being reset properly when the tasks finish. If ant is going to support multithreaded tasks, then we may need to be more careful in our management of such shared resources. Also, I'd like to give you some feedback on your patches. Please do not tabify the files you touch. According to the patch you submitted, you changed all of Available.java. This makes it very difficult to see what you really changed and thus to review your patch. Also the tabbing you have inserted is not actually correct either. In my editor, the Available.java you submitted looks like this. public class Available extends Task { private String property; private String classname; private File file; private String resource; private Path classpath; private AntClassLoader loader; private String value = "true"; /** Task will fail if the resource is not available */ private boolean failOnError = false; /** Reverse phrase: NOT Availabe */ private boolean notAvailable = false; public void setClasspath(Path classpath) { if (this.classpath == null) { Cheers Conor