1

スレッディング、シングルトン、アンドロイドの質問があります。

では、次のシングルトン コードがあるとします。

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;

それ以外では、アプリケーションが のインスタンスを 1 つだけ持つようにするための適切なメカニズムを設定しましたSingleton

ただし、これを行っても、メンバー変数はまったく保護されませんnumber1。複数のスレッドからそのメンバー変数にアクセスする場合でも、適切に同期する必要があります。

于 2012-09-27T19:02:58.183 に答える