重用Groovy编译器配置对象

重用Groovy编译器配置对象,groovy,internals,Groovy,Internals,我有一些代码,它创建了一个Groovy编译器配置,并使用ImportCustomizer添加了大量隐式导入。我想知道在多个GroovyClassLoader或GroovyShell中重用相同的CompilerConfiguration对象是否安全。我在GroovyClassLoader或GroovyShell中没有看到任何代码会改变传入的编译器配置,因此它可能是安全的。只要您坚持使用ImportCustomizer,它可能是安全的,但编译自定义程序和编译器配置都不是线程安全的,因此,使用不同的配

我有一些代码,它创建了一个Groovy编译器配置,并使用ImportCustomizer添加了大量隐式导入。我想知道在多个GroovyClassLoader或GroovyShell中重用相同的CompilerConfiguration对象是否安全。我在GroovyClassLoader或GroovyShell中没有看到任何代码会改变传入的编译器配置,因此它可能是安全的。

只要您坚持使用
ImportCustomizer
,它可能是安全的,但编译自定义程序和编译器配置都不是线程安全的,因此,使用不同的配置对象可能更好。对于编译过程中的任何类,这通常都是正确的:它不是线程安全的

我可以很容易地想象这样一种情况:创建
编译器配置
,将其传递给多个
GroovyShell
实例,并在不同的线程中添加自定义程序


所以我想说,除非你有很好的理由共享相同的配置(我真的看不到:),否则请安全地使用不同的对象。

好吧,我不会在编译器配置初始创建后对其进行任何更改,但安全总比抱歉好。谢谢