如何在子线程执行完毕后返回值?

比如一个类如下
public class a
{
private String city;

public String getCity()
{
1、开启一个线程,在线程里将城市赋值给city
2、return city;
}

}

然后在另一个activity中调用该类,并且获取到city值比如
MainActivity
{
oncreate(~)
{
a a =new a();
String city = a.getCity();
}
}
问题是如何在子线程执行完毕后,才能返回city呢?

 public String getCity()
{
1、开启一个线程,在线程里将城市赋值给city,比如线程类对象是Thread tr;
加上tr.join();或者用CountDownLatch 之类的,都可以,不过不介意这么做,失去了在create时候的多线程加快速度的意思。
2、return city;
}

Java提供了Callable任务可以返回执行结果,然后它的get方法获取操作结果,如果线程没有返回就会阻塞直到得到值。

可以使用handler,在线程之行结束后, 用Message把值传到handler,在用接口回调就可以了,直接使用 return 是不行的,传过去的是空值,只用在二次执行后,才有值。