2 u010880786 u010880786 于 2016.05.08 17:13 提问

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

比如一个类如下
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呢?

4个回答

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

主线程等待子线程执行完毕后再执行
JAVA主线程等待子线程执行完毕再执行
主线程等待所有子线程执行完毕例子
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.05.08 18:24

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

qq1562609742
qq1562609742   2016.05.09 15:20

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!