【发布时间】:2011-02-26 19:57:49
【问题描述】:
我在 Java 中实现单例模式时提出了这个问题。尽管下面列出的示例不是我的真实代码,但与原始代码非常相似。
public class ConnectionFactory{
private static ConnectionFactory instance;
public static synchronized ConnectionFactory getInstance(){
if( instance == null ){
instance = new ConnectionFactory();
}
return instance;
}
private ConnectionFactory(){
// private constructor implementation
}
}
因为我不太确定静态同步方法的行为,所以我从谷歌得到了一些建议——在同一个类中不要(或尽可能少)多个静态同步方法。我猜在实现静态同步方法时,使用了属于 Class 对象的锁,这样多个静态同步方法可能会降低系统性能。
我说的对吗?还是JVM使用其他机制来实现静态同步方法?如果我必须在一个类中实现多个静态同步方法,最佳做法是什么?
谢谢大家!
亲切的问候!
【问题讨论】:
-
您的真实代码是否也与延迟初始化有关?因为这通常会浪费代码和开发人员的时间;在声明中初始化该字段在 99% 的情况下都是正确的,并且不需要同步。
标签: java multithreading concurrency static synchronized