首页 文章

GroovyClassloader行为

提问于
浏览
0

GroovyClassloader行为理解,

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("groovy");
GroovyScriptEngineImpl groovyEngineImpl = (GroovyScriptEngineImpl) engine;

在一个循环中,

for (int i = 0; i < 10; i++) {
            long startTime = System.currentTimeMillis();
            classLoader = new GroovyClassLoader(groovyEngineImpl.getClassLoader().getParent());
            fileName = fileName + i;
            Class groovyClass = classLoader.parseClass(s,fileName);
            long endTime = System.currentTimeMillis();
            System.out.println("Total elapsed time in execution o  " + (endTime-startTime));
            startTime = System.currentTimeMillis();
            groovyClass = classLoader.parseClass(s,fileName);
            endTime = System.currentTimeMillis();
            System.out.println("Second Time Total elapsed time in execution o  " + (endTime-startTime));


}

关于上面的代码,我有几个问题:

  • 在for循环中,我正在创建一个新的groovyclassloder对象,并解析两次groovy脚本 . 当循环第二次迭代,并尝试再次解析groovyscript时,会发生什么?

  • 第二次创建另一个对象时会发生什么 . 类加载器是否会设法从类路径中获取类或再次重新编译它?

  • 当触发重新编译时,groovy如何知道源的更改?

1 回答

  • 0

相关问题