Java - url.openStream 无法使用多线程

标签 java

当我尝试阅读 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); ,这导致进程退出,而不仅仅是线程退出。

最佳答案

显式问题是由另一个线程中的一行 System.exit(0); 引起的。

How a thread should close itself in Java?解释了如何退出线程,否则 exit(0) 将中断进程,而不仅仅是线程

关于Java - url.openStream 无法使用多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25803182/

相关文章:

java - 需要帮助开始通过 Java 将原始 G3 传真文件转换为 TIFF 格式

java - 打印由给定函数计算的每个级别的特定节点

java.lang.RuntimeException : exception while registering MBean, com.scale7.cassandra.pelops.pool:类型=PooledNode-my_keyspace-localhost

java - 用于泛型类型的 Gson 自定义反序列化器

java - 使用 ResponseBuilder 在位置 header 中强制相对 URI

Java 二维数组螺旋/顺时针遍历

java - 使用JUnit5时,我收到警告: "ClassNotFoundException: org.junit.platform.engine.support.filter.ExclusionReasonConsumingFilter"

java - 将字符串值列表传递给参数化的 JUnit 测试

Java里什么是与C++的Pair<L,R>相等的?

java - Idea 中的 Tomcat。 war 爆炸 : Server is not connected. 部署不可用