在android中,我正在创建用于url连接的线程。在线程中,我将响应消息存储在全局声明的字符串中。当我访问method方法时,它返回null。
public class Rate_fetch {
String total="";
public String rate(String dt)
{
new Thread(new Runnable(){
public void run(){
try {
URL url = new URL(tally_ipaddr+"/prorate.jsp?plist="+sss.toString().trim());
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader r = new BufferedReader(new InputStreamReader(in));
String x = "";
String total = "";
x = r.readLine();
int i=0;
while(x.length()>1)
{
total=total+x.toString().trim();
i++;
x = r.readLine();
}
}
catch(Exception e){
return e.toString();
}
}
}).start();
return total;
}
当我调用该方法时,它返回null。
Rate_fetch rf=new Rate_fetch();
String amt= rf.rate(prodList);
您真的只想使用它Thread
,尝试一下
public class Rate_fetch {
String total = "";
boolean b = true;
public String rate(String dt) {
StringBuilder sb = new StringBuilder();
new Thread(new Runnable() {
public void run() {
try {
URL url = new URL(tally_ipaddr + "/prorate.jsp?plist="
+ sss.toString().trim());
HttpURLConnection urlConnection = (HttpURLConnection) url
.openConnection();
InputStream in = new BufferedInputStream(urlConnection
.getInputStream());
BufferedReader r = new BufferedReader(
new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String s;
while (true) {
s = r.readLine();
if (s == null || s.length() == 0)
break;
sb.append(s);
}
b = true;
} catch (Exception e) {
b = true;
}
}
}).start();
while (b) {
}
total = sb.toString();
return sb.toString();
}
}
问题内容: 我做了这样的一个波纹管: 但是当我尝试通过getTemp使用temp时我得到0 我只想使用我在线程中所做的计算将其存储在某些变量中以备后用。 问题答案: 或者简单地添加 等待线程完成,然后再获得结果。 您的问题是您试图在计算结果之前获得结果。您应该等待线程完成后才能获得结果。这个答案也许不是最好的,但是是最简单的。由于其他人已经在使用Executors课程,所以我不想重复他们的答案。但
问题内容: 我有一个方法。值在内部被更改,我想将其返回给该方法。有没有办法做到这一点? 问题答案: 可以使用局部最终变量数组。该变量必须是非基本类型,因此可以使用数组。你还需要同步两个线程,例如使用CountDownLatch: 你也可以这样使用an Executor和a Callable:
问题内容: 我有一个如下的Java线程: 我大约有300个ID,每隔几秒钟-我启动线程以对每个ID进行呼叫。例如。 现在,我想从每个线程收集结果,并批量插入数据库,而不是每2秒进行300次数据库插入。 知道我该如何做到吗? 问题答案: 如果要在执行数据库更新之前收集所有结果,则可以使用该方法。如daveb建议的那样,如果您一次提交一项任务,则可以完成簿记工作。
问题内容: 我的android类中有以下线程。我如何从线程中获取err的值??? 我希望该值是方法的返回值,但是对于我一生来说,我无法获得该值… 问题答案: 您可以通过两种方式实现这一目标。 在 糟糕的 方式。创建一个可变对象,如整数 列表 ,然后让Thread(可运行)写入列表。您可以在外部类/方法的列表中访问值。 使用而不是。一个可以返回值
问题内容: 下面的函数返回一个字符串。我如何获取从线程目标返回的值? 上面显示的“一种显而易见的方法”不起作用:。 问题答案: 我见过的一种方法是将可变对象(例如列表或字典)与索引或某种其他标识符一起传递给线程的构造函数。然后,线程可以将其结果存储在该对象的专用插槽中。例如: 如果你确实想join()返回被调用函数的返回值,则可以使用如下所示的Thread子类来实现: 由于名称修改,这有点麻烦,并
问题内容: 我如何获得一个线程以将元组或我选择的任何值返回给Python中的父级? 问题答案: 我建议您在启动线程之前实例化Queue.Queue,并将其作为线程的args之一传递:在线程完成之前,它将结果作为参数接收到的队列中。父母可以或愿意。 队列通常是在Python中安排线程同步和通信的最佳方法:队列本质上是线程安全的消息传递工具,这是组织多任务的最佳方法!