子线程是无法返回数据的,所以创建一个成员变量来接收子线程中的数据,问一下这句话的问题在哪?本人本人也感觉不妥当。
代码中本人打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去处理