线程中的局部变量是什么?

Far*_*aev 2 java concurrency multithreading

根据 Java 并发实践,

每个线程都有自己的程序计数器、堆栈和局部变量。

我对“局部变量”语句感到困惑。这里的局部变量是什么意思?这是否意味着线程中共享变量的本地副本,例如,如果两个线程异步读取一个全局变量,则每个线程在其代码执行/路径中都持有该变量的副本?

或者它是指在线程内显式声明和创建的变量,哪些不是共享的?

ern*_*t_k 6

局部变量只是局部范围的变量。有关更多信息和示例,请参阅JLS 6.3

在下面的方法中

void method(String param1, int param2) {
    String concat = param1 + param2;
    if(concat.length() > 2) {
        int length = concat.length();
        System.out.println("concat is " + length + " character long");
    }
}
Run Code Online (Sandbox Code Playgroud)

局部变量包括方法参数(param1, param2),方法中声明的变量(concat, length

对于您的问题,变量的生命周期不会超出方法的执行。