我有一个单例类,该类返回多个实例,但我不知道怎么做。可能有多个线程在单例类上调用,但是如果是这种情况,我不确定如何使它正常工作。这是一些代码。
public class SomeClass{
private static final String TAG="someClass";
private volatile static SomeClass instance = new SomeClass();
public static synchronized SomeClass getInstance() {
Log.v(TAG,"Returning instance "+instance);
return instance;
}
private SomeClass() {
//Some initialization here
}
@Override
public String toString() {
StringBuilder sb=new StringBuilder();
sb.append("this="+System.identityHashCode(this));
return sb.toString();
}
}
我的日志如下所示:
11-02 12:50:04.494: V/someClass(12882): Returning instance this=1386326216
11-02 12:50:04.518: V/someClass(12900): Returning instance this=1384153464
我不知道如何设置2个实例。有任何想法吗?
最佳答案
正如@CommonsWare猜测的那样,问题是我有两个进程正在运行,导致两个类加载器实际上生效,这是单例进程的已知边界。解决方案是从类中使用的服务中删除android:process
标记,以确保只有一个实例。
关于java - 单例返回多个实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26699511/