可変スコープに関する質問があります。例えば静的メソッドとスレッドセーフティのローカル変数
:
class A {
private static void test() {
// do something with local variables
}
}
は今、私は2つのスレッドを作成し、各スレッドのためにA
の1つのインスタンスを作成します。
私は、各スレッドで
test()
を呼んで、私はtest()
は、スレッドセーフであることを保証することができますか?test()
のローカル変数はどこに保存されていますか?各スレッドのスタック?ヒープスペース?
P.S.この場合、静的は完全に無意味だと私は知っています。私はレガシーコードでそれを見つけました。私はただ私が知っていることを確認したい!
+1、あなたは確かに「合格」、(信号)することができますがが、他のスレッドに上のオブジェクトが、それは通常、例えば、それの「所有権を放棄」する必要があり作成されたスレッド。それ自身の参照をnullにするか、別のオブジェクトを作成して上書きして、2つのスレッドが同じオブジェクトに対して決して動作しないようにします。これが行われないと、オブジェクトは説明どおりに共有され、アクセスのためにロックが必要になります。 –
はい、その理由から、参照をnullにすることによってオブジェクトを破棄することは良い考えです。 – Erol
偉大な私はこの質問をしようとしていた!!!! – JohnMerlino