文章标题看起来是一个错误命题,因为在java的内存模型中方法的局部变量是放在线程私有的栈里的。下图是java虚拟机的内存模型:
?
那么如何访问呢?这当然是有前提的,首先必须是内部类,局部变量必须加final修饰符。看代码示例:
class="java">public class FinalTest {
public static void main(String[] args) {
new FinalTest().test();
Thread t = Thread.currentThread();
System.out.println("Thread" + t.getId() + ":主线程结束");
// 执行到此处,主线程结束
}
public void test() {
// 定义一个局部变量
final int var = 1;
final int[] refer = {1};
// 在内部类里访问局部变量var和refer
new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 10; i++