@Override
	protected void afterExecute(Runnable r, Throwable t) {
		TaskThread task = (TaskThread) r;
		IExcuteOperation excutor = task.getExcuter();
		TaskInfoStorage tis = QueueApi.getTaskInfoStorage(this.getTypeId());
		if (excutor != null) {
			try {
				logger.debug("-----执行afterRun------");
				task.getTask().getTaskStatus().setOptStatus(4);
				excutor.afterRun();
			} catch (Exception e) {
				try {
					logger.error(e);
					excutor.exception();
				} catch (QueueBizRuntimeException e1) {
					logger.error(e);
					throw new RuntimeException(e);
				}
				throw new RuntimeException(e);
			}

			try {
				logger.debug("------执行任务finish操作-----");
				task.getTask().getTaskStatus().setOptStatus(5);
				excutor.finish();
				tis.removeRunningMap(task.getFlowId());
				tis.removeTaskFromQueue(task);
				if (Config.CACHE_FINISHED) {
					tis.putFinishedMap(task.getFlowId(), task);
				}
			} catch (QueueBizRuntimeException e) {
				try {
					logger.error(e);
					excutor.exception();
				} catch (QueueBizRuntimeException e1) {
					logger.error(e);
					throw new RuntimeException(e);
				}
				throw new RuntimeException(e);
			}
			this.setUpdateTime(new Date());
		}
	}