为什么Java现在在
方法中执行时,内部的局部变量不会产生安全问题?public void test()
{
int i = 0; // 例如这里的i
}

解决方案 »

  1.   

    每当启动一个新线程时,java虚拟机都会为它分配一个java栈,java栈上的所有数据都是此线程私有的.任何线程都不能访问另一个线程的栈数据,因此我们不需要考虑多线程情况下栈数据的访问同步问题.当一个线程调用一个方法的时候,方法的局部变量保存在调用线程的java栈的桢中,只有一个线程能访问那些局部变量,即调用方法的线程.摘自:<深入java虚拟机(第2版)>
      

  2.   

    嗯,每个线程都有自己的栈,那种栈称为栈帧(stack frame)
      

  3.   

    假设有线程A和线程BA使用B的get方法来获得B栈里的引用,不就可以直接修改了?