我有一个单例类,该类返回多个实例,但我不知道怎么做。可能有多个线程在单例类上调用,但是如果是这种情况,我不确定如何使它正常工作。这是一些代码。

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/

10-13 04:30