java 局部变量 多线程_多线程通过final访问主线程局部变量

在Java中,由于局部变量存放在线程私有的栈中,一般无法直接在多线程环境下共享。然而,如果局部变量是final修饰的,并在内部类中使用,线程可以访问这些变量。示例代码展示了如何通过final修饰的局部变量在内部类的线程中进行访问,同时讨论了对引用类型局部变量的修改限制。
摘要由CSDN通过智能技术生成

文章标题看起来是一个错误命题,因为在java的内存模型中方法的局部变量是放在线程私有的栈里的。下图是java虚拟机的内存模型:

9660b4eabb00cd36a78866b27785902a.png

?

那么如何访问呢?这当然是有前提的,首先必须是内部类,局部变量必须加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++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值