Я разрабатываю настольное приложение без графического интерфейса для своей компании, которое планируется всегда запускать в фоновом режиме, получая информацию с веб-сайтов (через HtmlUnit) и обновляя некоторые строки в базе данных.
Я использую ExecutorService для отправки задач, когда веб-сайт загружен, чтобы я мог установить время ожидания. Таким образом:
private ExecutorService taskExecutor = Executors.newFixedThreadPool(1);
private long timeout = 60000L;
private Page loadSite(Loader<Page> c) {
Page page;
Future<Page> result = taskExecutor.submit(c);
try {
page = result.get(timeout, TimeUnit.MILLISECONDS);
} catch (TimeoutException | ExecutionException | InterruptedException ex) {
close();
result.cancel(true);
throw new HandledWebException(ex);
}
return page.getEnclosingWindow().getEnclosedPage();
}
Вопросы:
- Должен ли я проверить, способен ли мой объект
taskExecutor
запланировать задачу перед вызовом submit
, и при необходимости восстановить его? (Продолжительное время казни мне кажется угрозой)
- Должен ли я выключить и заново создать
taskExecutor
, если не удалось выполнить отправленную задачу?