How to return a value from thread in java?
android, java, multithreading
Solution
It you really want to use `Thread` only, try this
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();
}
}
Problem
In android i am creating thread for url connection.Inside the thread i store the response message in a string which is globally declared.When I access the method method it returns 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; } ``` When i call the method it returns null. ``` Rate_fetch rf=new Rate_fetch(); String amt= rf.rate(prodList); ```