@Override public TaskResult get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { if (!executionLock.await(timeout, unit)) { throw new TimeoutException( String.format( "Task '%s[%s]' hasn't completed", performer.retrieveName(), descriptor.getId())); } return result; }
/** * Устанавливает параметры завершения задачи * * @param results результат задачи * @param resultStatus статус завершения * @param exception исключения, которое произошло в процессе выполнения */ private void endTask( Map<String, Object> results, TaskResultStatus resultStatus, Throwable exception) { writeLock.lock(); try { result.setContent(results); result.setStatus(resultStatus); if (exception != null) { result.setErrorMessage( StringUtils.abbreviate(exception.getMessage(), TaskResult.ERROR_MESSAGE_MAX_SIZE - 3)); } result.setEndDate(new Date()); executionLock.countDown(); changeState(null, TaskExecutionStatus.READY); } finally { writeLock.unlock(); } }
@Override public TaskResult get() throws InterruptedException, ExecutionException { executionLock.await(); return result; }