Groovy单例线程安全
Groovy中的@Singleton注释是否使单例线程安全Groovy单例线程安全,groovy,thread-safety,singleton,Groovy,Thread Safety,Singleton,Groovy中的@Singleton注释是否使单例线程安全 如果不是,那么使用Groovy创建线程安全单例的最简单方法是什么?作为实例使用的实际类是而不是线程安全的(除非您创建了它)。这里有很多例子(例如:这里使用的是静态finalHashMap,这不是线程安全的) 使用groovys@singleton注释创建的singleton是线程安全的(您应该依赖于此) 显示转换生成的相应Java代码的两个版本: 以下是常规版本的@Singleton,它产生了一个静态final变量,在java中也是线程
如果不是,那么使用Groovy创建线程安全单例的最简单方法是什么?作为实例使用的实际类是而不是线程安全的(除非您创建了它)。这里有很多例子(例如:这里使用的是静态final
HashMap
,这不是线程安全的)
使用groovys@singleton
注释创建的singleton是线程安全的(您应该依赖于此)
显示转换生成的相应Java代码的两个版本:
@Singleton
,它产生了一个静态final
变量,在java中也是线程安全的:
lazy
版本(@Singleton(lazy=true)
),将创建:
作为参考,这里有一个您的意思是它是否使类中的所有方法都是线程安全的?
public class T {
public static final T instance = new T();
private T() {}
}
class T {
private static volatile T instance
private T() {}
static T getInstance () {
if (instance) {
instance
} else {
synchronized(T) {
if (instance) {
instance
} else {
instance = new T ()
}
}
}
}
}