1

我有一个线程、单例、android 问题。

因此,假设我们有以下单例代码。

public class Singleton {
    private Singleton instance;
    private int number1 = 0;

    private Singleton() {
        //lots of initialization code
    }

    public static synchronized Singleton getInstance() {
        if(instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

我的问题。对 number1 的访问是线程安全的,还是我需要创建一个带有锁定机制的访问器?

谢谢您的帮助。

4

2 回答 2

5

使对象成为单例对影响线程安全没有任何影响。如果您要在多个线程中使用单例,则需要根据需要管理数据同步。

于 2012-09-27T18:58:05.937 回答
3

您的代码不会编译,因为instance它不是静态的。声明应为:

private static Singleton instance;

除此之外,您已经建立了一个很好的机制来确保您的应用程序只有一个Singleton.

但是,这样做不会number1以任何方式保护您的成员变量。如果您从多个线程访问该成员变量,您仍然需要正确同步事物。

于 2012-09-27T19:02:58.183 回答