Как я называю некоторый метод блокирования с тайм-аутом в Java?

Я предлагаю реализовать следующий процесс:

  • присваивают версию Вашим css/js файлам каждый раз, когда Вы развертываетесь, что-то как: экран 1233.css (число может быть Вашим пересмотром SVN при использовании системы управления версиями)

  • уменьшает их для оптимизации загружающихся времен

89
задан jjujuma 22 July 2009 в 10:18
поделиться

2 ответа

Вы можете использовать Executor:

ExecutorService executor = Executors.newCachedThreadPool();
Callable<Object> task = new Callable<Object>() {
   public Object call() {
      return something.blockingMethod();
   }
};
Future<Object> future = executor.submit(task);
try {
   Object result = future.get(5, TimeUnit.SECONDS); 
} catch (TimeoutException ex) {
   // handle the timeout
} catch (InterruptedException e) {
   // handle the interrupts
} catch (ExecutionException e) {
   // handle other exceptions
} finally {
   future.cancel(true); // may or may not desire this
}

Если future.get не возвращается через 5 секунд, он выдает TimeoutException . Тайм-аут может быть настроен в секундах, минутах, миллисекундах или в любой другой единице, доступной в качестве константы в TimeUnit .

Подробнее см. JavaDoc .

139
ответ дан 24 November 2019 в 07:18
поделиться

Вы можете заключить вызов в FutureTask и использовать версию get () с тайм-аутом.

См. http: // java .sun.com / j2se / 1.5.0 / docs / api / java / util / concurrent / FutureTask.html

10
ответ дан 24 November 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: