0

次のクラスは、実際のユースケースに似たものを示しています。同じスレッドに対して常に同じインスタンスを返します。

public class LookingForName {

    private static final ThreadLocal<Something> threadLocal = 
        new ThreadLocal<Something>(){
            @Override
            protected Something initialValue() {
                return getSomethingSpecial(); // not relevant
            }
        };

    /**
     * @return always the same instance of "Something" for the current thread.
     */
    public static Something getInstance() {
        return threadLocal.get();
    }

}

どのようにそれを呼びますか?それは「工場」ですか?「バリューホルダー」?「ThreadLocalStore」?

4

3 に答える 3

6

単にそれをThreadLocalパターンと呼ぶ人もいます。別の既知の名前はスレッドローカルストレージ(TLS)です。

于 2010-08-11T11:38:49.793 に答える
4

工場ではありません。シングルトンのように見えます。ファクトリの考え方は、ベースクラスで派生したオブジェクトを作成することです。

于 2010-08-11T11:28:13.640 に答える
0

getInstance()間違いなくファクトリメソッドです。

誰かがスレッドごとの疑似シングルトン全体のクールな名前と競合している可能性がありますが、広く関連するケースは非常にまれであるため、それを持つことに価値はありません。「スレッドごとのシングルトン」は私にとって最良の選択肢のように思えます。

于 2010-08-11T11:33:12.617 に答える