我正在寻找一种在 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/