我有一个关于变量作用域的问题。静态方法和线程安全的局部变量
例如:
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