普通のクラスでは1つのスレッドからアクセスできるように設計されており、多くのスレッドが同時に1つのインスタンスを使用できるようにしたい。静的にし、locks
を使用して、いくつかのクラスレベルのメソッドと変数を作成し、それらをthread-safe
にします。ローカル変数を使用する方法(デフォルトでは、各スレッドにはスタックがあります)もあります。ThreadLocalを使ってスレッドセーフな通常のクラスを作成する<T>
私の質問は、古いクラスのproperties
です。より一般的には、non-static
という変数です。私は単にThreadLocal<T>
を使用することができ、各スレッドはproperties
という独自のセットを持っていますか?確かにlocks
と他のthread-safety
の問題がsetters
(私はgetters
が安全であると仮定します)の内部で使用します。
ThreadLocal<T>
のパフォーマンスキラーですか?
このクラスが何をしているのか、また複数のスレッドからの干渉がある理由を説明することなく、誰もあなたに良い答えを与えることはできません。 – Anon
ThreadLocalは正確に何を信じていますか?私はそれがあなたが思っていることはしないと思うので。スレッドローカルストレージが正しいソリューションだと思う理由を説明できますか? –
@Eric:スレッドにローカルな変数を読んでいます。したがって、実行スレッド数と同じ数のプロパティがあります。したがって、オブジェクトはスレッドごとに状態を持つことができます。 – Xaqron