public void run(){
		// 如果不再继续该递归，返回
		if(!isContinuedByThisPriority){
			return;
		}
		
		// 判断最大堆中是否有元素以及allTasks中是否还有元素
		// 如果优先队列中的元素为空，且allTasks中的元素也为空，说明执行完毕，不再继续执行
		if(tasksPriorityQueue.isEmpty()){
			if(allTasks.size() == 0){
				isContinuedByThisPriority = false;
				isFoundSolutionByThisPriority = true;
			}
		}
		
		// 将当前时间增加1
		Setting.increaseTime();
		// 如果优先队列中的元素为空，但是allTasks还有元素
		if(!tasksPriorityQueue.isEmpty()){
			// 将优先队列队首元素的剩余时间-1
			Task taskMaxPriority = tasksPriorityQueue.poll();
			int taskRemainingTime = taskMaxPriority.getRemainingTime() - 1;
			taskMaxPriority.setRemainingTime(taskRemainingTime);
			if(taskRemainingTime != 0){
				tasksPriorityQueue.add(taskMaxPriority);
			}
			else{
				taskMaxPriority.setFinishTime(Setting.getCurrentTime());
				// 如果当前的任务已经执行完毕的话，就将该任务的finishTime设置了
				boolean isTaskX = inputUnit.setFinishTimeOfTask(taskMaxPriority);
				// 如果找到是未知优先级的任务，且该结束时间不是要求，则赋值新的优先级
				if(isTaskX){
					boolean isCorrect = isCorrectSolution(taskMaxPriority.getFinishTime());
					if(!isCorrect){
						isContinuedByThisPriority = false;
						isFoundSolutionByThisPriority = false;
						return;
					}
				}
			}
		}
	
		// 遍历allTasks，看看是否有在当前时间进入的
		checkAllTasks();
		// 继续拿出最大堆中的根元素运行
		run();
	}