当我尝试从网址中读取json text
时,这是一个明显的问题。我在URLReader
main
函数中进行了测试,它返回文本正常。但是当我在一个线程中调用类外的方法时,IDE没有报告任何Exception
和消息,直到我追溯到URLReader
。
public static String loadText(String path) throws Exception {
URL url = new URL(path);
try (BufferedReader in = new BufferedReader(
new InputStreamReader(url.openStream()))) { /* <--- where it goes wrong */
String inputLine;
String lines = "";
while ((inputLine = in.readLine()) != null) {
lines += inputLine;
} return lines;
}
}
线url.openStream()
在线程的外部调用中保持沉默,但奇怪的是,它在自己的main
中总是正常工作。例如,这会导致<html>
文字:
public static void main(String[] args) throws Exception {
System.out.println(text("https://google.com"));
}
-----------------------------------这里的一些代码--------- ------------------------------
线程看起来像:
Thread t = new Thread(new Runnable(){
public void run() {
try { Update.updateRecord(); }
catch (Exception e) {}
}
});
t.start();
可能是什么问题?
修改
正如manouti所提到的,我有一些帖子和Thread t
。当我单独离开t.start();
时,它可以很好地工作,但不能与其他线程一起工作。
Thread t1, t2, t;
/* defined runnable() here */
t1.start(); t2.start(); t.start(); // <--- went wrong
t.start(); // <--- perfectly
修改
我提醒说,在帖子t1
和t2
中,我调用了System.exit(0);
,这导致了进程的退出,而不仅仅是线程。
答案 0 :(得分:1)
显式问题是由另一个线程的System.exit(0);
行造成的。
How a thread should close itself in Java?解释了退出线程的方法,否则exit(0)
会中断进程,而不仅仅是线程。