import groovy.lang.Binding; import groovy.util.GroovyScriptEngine; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class TestFilesOpen { /** * @param args */ public static void main(String[] args) throws Exception { long init = System.currentTimeMillis(); ExecutorService es = Executors.newCachedThreadPool(); List l = new ArrayList(); for (long i =1; i<30; i++) { A c = new A(); c.id = i; l.add(c); } System.out.println("AAAAa"); List l2 = es.invokeAll(l); for (Future a : l2) { a.get(); } System.out.println("BBBBb [] " + (System.currentTimeMillis() - init)); } public static String init(long id) throws Exception { try { String[] roots = new String[] { "C:/cvslocal/Groovy/code/src" }; GroovyScriptEngine gse = getGroovyEngine(roots); Binding binding = new Binding(); binding.setVariable("input", Long.toString(id)); binding.setVariable("output", Long.toString(id)); gse.run("Test2.groovy", binding); return (String)binding.getVariable("output"); } catch (Throwable b) { b.printStackTrace(); System.err.println(b); } return ""; } private static GroovyScriptEngine gse2 = null; private static synchronized GroovyScriptEngine getGroovyEngine(String [] roots) throws Exception { if (gse2 == null) { gse2 = new GroovyScriptEngine(roots); } return gse2; } private static class A implements Callable { long id; public Object call() throws Exception { init(id); return null; } } }