gpt4 book ai didi

java - 使用多线程从不同的 url 获取响应

转载 作者:行者123 更新时间:2023-12-01 10:00:27 25 4
gpt4 key购买 nike

我正在对 Java servlet 进行 ajax 调用,该 servlet 从不同的 url 获取响应并在发回之前操作数据。现在,由于有很多 url,为了加快进程而不是顺序处理,我使用了 CountDownLatch 并为每个 url 响应创建了一个类(我将用于多线程)。我无法理解如何将数据从每个响应类发送回主 servlet,以便我可以操作数据并将其发送回 ajax 调用。

这是我的 servlet 的 doget(),它是通过 ajax 调用调用的。

private static CountDownLatch _latch;
private static int N = 2;
_latch = new CountDownLatch(N);
try {
new Thread(new FirstUrl(_latch)).start();
new Thread(new SecondUrl(_latch)).start();
_latch.await();
}
catch (InterruptedException e) {
e.printStackTrace();
}

这是 url 响应类。

 public class SecondUrl implements Runnable {

private CountDownLatch _latch = null;
public SecondUrl(CountDownLatch _latch) {
this._latch = _latch;
}


public void run() {
URI uri;
try {
uri = new URI("http://url1.com");
JSONTokener tokener = new JSONTokener(uri.toURL().openStream());
JSONObject root = new JSONObject(tokener);
_latch.countDown();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

类似地,还有另一个具有不同 url 的类。如何将 JSONObject 结果发送回 servlet,以便我可以操作它。

我是多线程新手,所以我对任何方法都可能是错误的。欢迎指出。谢谢。

最佳答案

使用 Callable 而不是 Runnable。看Future界面。

关于java - 使用多线程从不同的 url 获取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36855721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com