子线程是无法返回数据的,所以创建一个成员变量来接收子线程中的数据,问一下这句话的问题在哪?本人本人也感觉不妥当。
代码中本人打LOG日志,得到是a=null,b=null,但是本人打断点,a=1,b=1,这是见鬼了吗
代码中本人打LOG日志,得到是a=null,b=null,但是本人打断点,a=1,b=1,这是见鬼了吗
public class Aa { public String a;//成员a是存放在堆内存的 public void getData2(){ String b=getData(); Log.i("Aa", "a=" + a + "||" + "b=" + b); } public String getData(){ try { Thread.currentThread().sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } new Thread(new Runnable() { @Override public void run() { a = "1"; } }).start(); return a; } }
解决方案
40
你没有同步,getData是异步的,所以log不会等到getData执行完,所以打印时,getData还没执行,所以是null,及用handler去处理