我有一個關於變量作用域的問題。靜態方法和線程安全的局部變量
例如:
class A {
private static void test() {
// do something with local variables
}
}
現在我做兩個線程,併爲每個線程創建的A
一個實例。
當我在每個線程中調用
test()
,我可以保證,test()
是線程安全的?test()
的本地變量在哪裏存儲?每個線程的堆棧?堆空間?
P.S.我知道靜態在這種情況下完全沒有意義。我在我們的遺留代碼中找到它;我只是想確定我所知道的!
+1,但你肯定能「通」,(信號),對象給其他線程,但是創建它平時應「放棄所有權」的它,例如線程。通過使其自己的引用無效或通過創建另一個對象來覆蓋它,以便兩個線程永遠不能在同一個對象上操作。如果沒有完成,按照您的描述,該對象將被共享,並且需要鎖定才能訪問。 – 2012-07-18 06:31:40
是的,出於這個原因,通過將參考歸零來處置對象是個好主意。 – Erol 2012-07-18 06:33:32
偉大的我正要問這個問題! – JohnMerlino 2014-06-30 21:27:26