В моем коде есть цикл, который строит фьючерсы, что очень медленно. Чтобы построить всего 1 Будущее, требуется около сотен миллисекунд. Я просто говорю о настройке объекта Future, а не о получении ответа. Вот код:
while(settings.getCrawlerQueue().size() < settings.getCrawlerQueueSize()) {
Task task = taskQueue.poll();
task = setFutureInTask(assignment, task);
}
И код setFutureInTask()
:
public Task setFutureInTask(String assignment, Task task) {
task.setParserAssignment(assignment);
switch(assignment){
case "stuff":
task.setFuture(asyncClientStandard
.prepareGet("http://"+task.getDomain())
.execute()
);
break;
[...]
Я пробовал разные Java JDK и версии, как это предлагается в некоторых материалах, которые я читал (не могу найти:/), но это не помогает. Также попробовал JDKAsyncHttpProvider
вместо NettyAsyncHttpProvider
по умолчанию, что намного быстрее, но также дает очень много Flase-Negatives (кажется, отменяет очень (!) часто действительные домены). Что я заметил, так это то, что я живу в Германии, и немецкие домены .de заметны быстрее, чем домены из других стран, таких как Испания.
Любая дикая догадка высоко ценится! :)
[EDIT]
Простое переключение на другой DNS-сервер решило проблему.
AndroidAsync
? ссылка - person The Nomad   schedule 22.07.2014