Я пишу небольшое приложение и обнаружил проблему. Мне нужно вызвать один (позже, возможно, два) метода (этот метод что-то загружает и возвращает результат) без отставания в окне приложения.
Я нашел такие классы, как Executor
или Callable
, но не понимаю, как с ними работать.
Не могли бы вы опубликовать какое-либо решение, которое мне поможет?
Спасибо за все советы.
Изменить: метод ДОЛЖЕН возвращать результат. Этот результат зависит от параметров. Что-то вроде этого:
public static HtmlPage getPage(String page) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
return webClient.getPage(page);
}
Этот метод работает около 8-10 секунд. После выполнения этого метода поток можно остановить. Но мне нужно вызывать методы каждые 2 минуты.
Изменить: я отредактировал код следующим образом:
public static HtmlPage getPage(final String page) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
Thread thread = new Thread() {
public void run() {
try {
loadedPage = webClient.getPage(page);
} catch (FailingHttpStatusCodeException | IOException e) {
e.printStackTrace();
}
}
};
thread.start();
try {
return loadedPage;
} catch (Exception e) {
return null;
}
}
С этим кодом я снова получаю ошибку (даже если я вынесу return null
из блока catch).
Executor
и _ 2_ есть примеры в javadoc. И тема о параллелизме i > ветка в официальном руководстве. Вот с чего я начинаю. Вам следует задать новый вопрос, если вы не понимаете чего-то конкретного в этих материалах или если вы застряли, воспользовавшись содержащейся в них информацией. - person millimoose   schedule 08.04.2013Callable<HtmlPage>
, поэтому сосредоточьтесь на документации для этих и связанных классов / методов.submit()
должен возвращатьFuture<HtmlPage>
, который позволит вам что-то сделать (например, обновить пользовательский интерфейс), когда станет доступен результат. - person millimoose   schedule 08.04.2013