Android Singleton线程安全

时间:2012-09-27 18:54:58

标签: java android thread-safety singleton

我有线程,单身,安卓问题。

所以我们假设我们有以下单例代码。

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是线程安全还是我需要创建一个带锁定机制的访问器?

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

使对象成为单例根本不会影响线程的安全性。如果您要从多个线程使用单例,则需要根据需要管理数据同步。

答案 1 :(得分:3)

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

private static Singleton instance;

除此之外,您已经设置了一个很好的机制来确保您的应用程序只有一个Singleton实例。

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