public TaskStatus taskStatus(Number160 taskId) { TaskStatus statusResult = new TaskStatus(); String exception; synchronized (lock) { exception = exceptions.get(taskId); } if (exception != null) { statusResult.setFaildeReason(exception); statusResult.setStatus(TaskStatus.Status.FAILED); if (logger.isDebugEnabled()) { logger.debug("finished task failed for task with ID " + taskId); } return statusResult; } int pos = 0; Task taskFound = null; for (Runnable runnable : executor.getQueue()) { Task task = (Task) runnable; if (task.taskId.equals(taskId)) { taskFound = task; break; } pos++; } if (taskFound != null) { statusResult.setQueuePosition(pos); statusResult.setStatus(TaskStatus.Status.QUEUE); if (logger.isDebugEnabled()) { logger.debug("finished task queue for task with ID " + taskId); } return statusResult; } synchronized (lock) { statusResult.setStatus(status.get(taskId)); } if (logger.isDebugEnabled()) { logger.debug("finished task status for task with ID " + taskId); } return statusResult; }