赞
踩
如何在java的子线程中修改主线程的值呢?
首先我们可以将主线程理解为一个进程,这个进程中有许多子线程(实际上主线程和子线程的关系也就是这样子的)
对于这个问题,目前我知道的一种解决思路是:
在主线程中建立成员变量count
在主线程中建立一个成员函数change(),在这个成员函数中实现子线程的创建和执行。
创建:而创建子线程的时候必然要重写run()方法,所以可以在重写的run()方法中进行cuont的值的更改。
执行:对创建的子线程直接使用其start()方法执行
在主线程的main函数中调用change()之后,直接就输出,会发现值没有更改。出现这个现象的原因可能是子线程还未执行就已经进行了输出操作。所以,应该在子线程start()启动后,将主线程延迟一段时间再输出初始的成员变量的值,这时候就可以实现进程全局变量的改变。
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线程的创建方法我在其他博文中总结了方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。