【发布时间】:2014-04-30 05:33:05
【问题描述】:
我正在从我的 java 应用程序向 php 页面发送一些 json,如果成功,它会回显“完成”。 json 和 php 运行良好。我正在尝试将字符串传递给线程,然后将字符串的值更改为来自线程中 php 的回显,当线程完成时,我想使用 if 语句来确定 URL 连接是否成功完成...我只是无法从线程中获取字符串的值。
这是我的代码:
main.java
final String line = "unfinished";
Thread iURL = new instrURL(line, jsonArray);
iURL.start();
while(iURL.isAlive())
{
System.out.println("In wait loop");
}
System.out.println(line);
if(line.trim() == "finished")
{
System.out.println("Made it to finished");
}
else
{
System.out.println("Did not make it to finished");
}
instrURL.java
public class instrURL extends Thread{
String line;
String jsonArray;
public instrURL(String line, String jsonArray)
{
this.line = line;
this.jsonArray = jsonArray;
}
public void run()
{
try
{
URL url = new URL("http://fake.php?jsonArray="+URLEncoder.encode(jsonArray, "UTF-8"));
URLConnection conn = url.openConnection();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
line = rd.readLine();
System.out.println(line);
rd.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
控制台:
在等待while循环中 在等待while循环中 ... ... ... 在等待while循环中 完成的 在等待while循环中 在等待while循环中 在等待while循环中 未完成 没有完成正如您从控制台中看到的,线程已完成,但一旦超出线程,字符串值仍未完成。
任何帮助将不胜感激。
【问题讨论】:
-
关于
== "finished":how-do-i-compare-strings-in-java -
我看不到您将 any 字符串设置为
"finished"的任何地方,那么即使在您修复了==有问题吗? -
Java 是按值传递的,因此您无法更新
line的值,除非您明确分配新值。但是你不能因为line被声明为final。 -
Sorry changed String line to line = rd.readLine();
-
@OP 不过,
if(line.trim() == "finished")永远不会是真的。
标签: java string multithreading