java - 一些 java 处理程序仅在结果可用时获取 url.openStream()

标签 java multithreading asynchronous web-content

我正在寻找一种在 Java 中打开许多网站连接的方法。

我的问题是在很多情况下服务器响应时间真的很慢。因此,我认为寻找一些可以处理打开多个连接并且可能在连接/响应准备就绪时使用处理程序的 Java 库是个好主意。

有没有类似的东西(这是伪代码!!)

getWebsiteContent(URL url) { //does not wait for the response
new AsynchronousConnection(url) {

    requestServedHandler(ConnectionObject) {
        InputStream is = ConnectionObject.getInputStream();

        //here I will process the content of the stream only when it is available
    }
} 
}

我不介意给我原始 HTML 的处理程序。

最佳答案

我不知道有这样一个专门的库,但您可以创建自己的多线程解决方案。将你的猎犬任务写成 Callable返回 HTML 然后将这些可调用文件与适当的 URL 提交到 ExecutorService .网上有大量此模式的代码示例,但如果您需要,我可以给您写一个。
多一点提示:此设置类似于非常常见的生产者-消费者模式。您的任务可以将站点内容放入 BlockingQueue并让处理器线程定期轮询以查找就绪数据。如果您想要更活跃或不想要,可以使用超时进行轮询,但这会阻塞直到数据可用。

关于java - 一些 java 处理程序仅在结果可用时获取 url.openStream(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12419737/

相关文章:

java - 当 stderr 通过管道传输时,python 子进程挂起

java - Libgdx getProperties().get ("value") 给我奇怪的回应

java - 如何知道新文件是否添加到谷歌驱动器中的特定文件夹

c# - 如何在 C# 中强制退出应用程序?

c++ - 互锁函数 c++

c++ - 与引用 lambda 崩溃异步

java - 一个对象可以包含它的父类(super class)吗?

java - 线程卡住 UI - Android

javascript - Playfab - 引用错误 : "Promise" is not defined

javascript - 在干净的 JavaScript 中等待异步函数