我有线程,单身,安卓问题。
所以我们假设我们有以下单例代码。
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是线程安全还是我需要创建一个带锁定机制的访问器?
感谢您的帮助。
答案 0 :(得分:5)
使对象成为单例根本不会影响线程的安全性。如果您要从多个线程使用单例,则需要根据需要管理数据同步。
答案 1 :(得分:3)
您的代码无法编译,因为instance
不是静态的。声明应为:
private static Singleton instance;
除此之外,您已经设置了一个很好的机制来确保您的应用程序只有一个Singleton
实例。
但是,这样做并不能以任何方式保护您的成员变量number1
。如果从多个线程访问该成员变量,您仍需要正确地同步事物。