public static void timedRun(Runnable r,
long timeout, TimeUnit unit)
throws InterruptedException {
Future task = taskExec.submit(r);
try {
task.get(timeout, unit);
} catch (TimeoutException e) {
// task will be cancelled below
} catch (ExecutionException e) {
// exception thrown in task: rethrow
throw launderThrowable(e.getCause());
} finally {
// Harmless if task already completed
task.cancel(true); // interrupt if running
}
}
Когда task.get (timeout, unit) бросает прерывание. Если исходное исключение не завершило запуск потока, запущенный Runnable r , эта отмена приведет к тому, что задача.>
Я реализовал API /TransferFile , который загружает файл с сервера и записывает его в определенное место. Чтобы гарантировать, что передача файла работает в фоновом режиме, я использую receectorservice с однопоточным исполнителем, как это:...
Я реализовал API /TransferFile , который загружает файл с сервера и записывает его в определенное место. Чтобы гарантировать, что передача файла работает в фоновом режиме, я использую receectorservice с однопоточным исполнителем, как это:...
Листинг 7.20. Использование частного исполнителя, чья срок службы ограничена методом вызова.
public boolean checkMail(Set hosts, long timeout, TimeUnit unit)
throws InterruptedException {
ExecutorService exec = Executors.newCachedThreadPool();...