我在Web应用程序中有这个Singleton类.
public class MyDAO 
 {
    private static MyDAO instance;
    private MyDAO() {
    }
    public static MyDAO getInstance() {
        if (instance == null) {
            instance = new MyDAO();
        }
        return instance;
    }
我会这样访问它
public void get_Data()
{
        MyDAO dao = MyDAO.getInstance();
}
如果有3个用户访问应用程序,将创建多少个MyDAO类对象?
每个用户会有一个MyDAO实例吗?
您必须同步访问getInstance().否则某些线程可能会看到未完全初始化的版本.
有关Singleton Patter的更多信息
一旦你同步它将只有一个实例JVM.无论有多少变量引用该对象.但是如果你运行N个服务器,每个服务器中都会有一个实例JVM.总共N个实例.
您可以仔细检查您是否正在使用Java 5.0或更旧:
private static volatile MyDAO();
 public synchronized static MyDAO getInstance() {
    if (instance == null) {
        instance = new MyDAO();
    }
    return instance;
但是如果你的应用程序总是需要一个实例,你可以急切地实例化它:
private static MyDAO = new MyDAO();
但我会寻求Bill Purge解决方案:
    private static class MyDAOHolder { 
            public static final MyDAO INSTANCE = new MyDAO();
    }
    public static MyDAO getInstance() {
            return MyDAOHolder.INSTANCE;
    }