@Override
	protected List<String> compute() {
		//7、定义一个List<String>对象，保存文件中的文件名
		List<String> list = new ArrayList<>();
		
		//8、定义FolderProcessor任务列表，存放即将对子文件夹处理的子任务
		List<FolderProcessor> tasks = new ArrayList<>();
		
		//9、获取文件夹的内容
		File file = new File(path);
		File content[] = file.listFiles();
		
		//10、文件夹中的每一个元素，如果是一个子文件夹，创建一个FolderProcessor对象，调用fork()方法异步执行
		if(content != null){
			for(int i = 0; i < content.length; i++){
				if(content[i].isDirectory()){
					FolderProcessor task = new FolderProcessor(content[i].getAbsolutePath(), extension);
					task.fork();
					tasks.add(task);
				//11、否则，调用checkFile()方法，检查当前文件的扩展名与待查找的扩展名是否相同，如果相同，将文件的全路径存入刚才定义的list中
				}else{
					if(checkFile(content[i].getName())){
						list.add(content[i].getAbsolutePath());
					}
				}
			}
			
			//12、如果FolderProcessor子任务的列表大小超过50个元素时，在循环中向控制台输出信息
			if(tasks.size() > 50){
				System.out.printf("%s: %d tasks run.\n", file.getAbsolutePath(), tasks.size());
			}
			
			//13、调用辅助方法addResultsFromTasks()，将由这个任务启动的子任务返回的结果添加到文件列表中，需要传递的参数为：字符列表，FolderProcessor子任务列表
			addResultsFromTasks(list, tasks);
		}
		
		//14、返回字符列表
		return list;
	}