例如,我有一个像这样的类:

public class StaticObjectReference{
     private static StaticObjectReference instance;
     private Vector queue;

     public static StaticObjectReference getInstance(){
         if(instance == null){
              instance = new StaticObjectReference();
         }

         return instance;
     }

     public Vector getQueue(){
         queue = new Vector();
         return queue;
     }
}


接下来的两个类称为StaticObjectReference类。

public class CallerOne{
    Vector queue1;

    public void callObjectInstance1(){
         queue1 = StaticObjectReference.getInstance().getQueue();
    }
}

class CallerTwo{
    Vector queue2;

    public void callObjectInstance2(){
         queue2 = StaticObjectReference.getInstance().getQueue();
    }
}


类CallerOne中的queue1是否与类CallerTwo中的相同实例queue2

最佳答案

您正在使用类StaticObjectReference的相同实例进入队列,因此,是的,它们是同一队列。

请注意,这与instance是静态的事实没有直接关系。该类正在实现Singleton pattern,这还需要做很多工作,因此该类只有一个实例。

正如Brian指出的那样,此实现不是线程安全的。检查Wikipedia链接以获取线程安全方法。

10-04 18:40