在下面的代码中, 我正在创建 groovy 实例并将其缓存在 HashMap 中。
GroovyClassLoader loader = new GroovyClassLoader(this.getClass().getClassLoader());
Class groovyClass = loader.parseClass(groovyMap.get(key), key + ".groovy");
groovyObject = (GroovyObject) groovyClass.newInstance();
instanceMap.put(key, groovyObject);
当我在多线程模式下从缓存映射中获取实例并执行
groovtIObject.invokeMethod("methodname",args);
该方法是否是线程安全的,就像在 java 中一样。我没有在 groovy 脚本中共享任何实例级变量。
感谢您的意见。
最佳答案
当 Groovy 生成字节码并实际生成一个方法时,它将具有与 Java 方法大致相同的线程安全级别。请注意 Binding 默认情况下并不是真正的线程安全。但既然你说了,你排除了实例级变量,那应该没问题。
关于java - Groovy - 对象重用。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24708943/