java子线程修改主线程中的全局变量的值最详细解答

本文介绍如何在Java中使用子线程修改主线程中的全局变量。通过创建子线程并重写run()方法,在其中修改主线程的变量count,然后通过主线程的延迟确保子线程执行完毕后再输出变量值,实现跨线程的数据更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何在java的子线程中修改主线程的值呢?
首先我们可以将主线程理解为一个进程,这个进程中有许多子线程(实际上主线程和子线程的关系也就是这样子的)

对于这个问题,目前我知道的一种解决思路是:

1.建立变量

在主线程中建立成员变量count

2.建立更改函数

在主线程中建立一个成员函数change(),在这个成员函数中实现子线程的创建执行
创建:而创建子线程的时候必然要重写run()方法,所以可以在重写的run()方法中进行cuont的值的更改。
执行:对创建的子线程直接使用其start()方法执行

3.值的输出验证

在主线程的main函数中调用change()之后,直接就输出,会发现值没有更改。出现这个现象的原因可能是子线程还未执行就已经进行了输出操作。所以,应该在子线程start()启动后,将主线程延迟一段时间再输出初始的成员变量的值,这时候就可以实现进程全局变量的改变。

4.代码

public static volatile long count = 100001;

	//创建子线程的函数
    private static void change() {
        Thread thread = new Thread(new Runnable() {
            @Override
            public synchronized void run() {
                count = 50;
            }
        });
        thread.start();
    }
    public static void main(String[] args) throws Exception {
        System.out.println(count);//原始的值
        change();//调用执行函数
        Thread.sleep(1);//主线程延迟,然子线程得以执行修改
        System.out.println(count);//修改后的值
    }

输出:
100001
50

PS:关于java线程的创建方法我在其他博文中总结了方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值