11.否则,调用checkFile()方法来比较文件的扩展名。如果文件的扩展名与将要搜索的扩展名相同,就将文件的完整路径存储到第7步声明的列表中。
} else {
if (checkFile(content[i].getName())){
list.add(content[i].getAbsolutePath());
}
}
}
12.如果FolderProcessor子任务列表超过50个元素,那么就在控制台输出一条信息表示这种情景。
if (tasks.size()>50) {
System.out.printf("%s: %d tasks ran.\n",file.
getAbsolutePath(),tasks.size());
}
13.调用addResultsFromTask()辅助方法。它把通过这个任务而启动的子任务返回的结果增加到文件列表中。传递两个参数给这个方法,一个是字符串列表list,一个是FolderProcessor子任务列表tasks。
addResultsFromTasks(list,tasks);
14.返回字符串列表。
return list;
15.实现addResultsFromTasks()方法。遍历任务列表中存储的每一个任务,调用join()方法等待任务执行结束,并且返回任务的结果。然后,调用addAll()方法将任务的结果增加到字符串列表中。
private void addResultsFromTasks(List<String> list,
List<FolderProcessor> tasks) {
for (FolderProcessor item: tasks) {
list.addAll(item.join());
}
}
16.实现checkFile()方法。这个方法检查作为参数而传递进来的文件名,如果是以正在搜索的文件扩展名为结尾,那么方法就返回true,否则就返回false。
private boolean checkFile(String name) {
return name.endsWith(extension);
}
17.实现范例的主类,创建Main主类,并实现main()方法。
public class Main {
public static void main(String[] args) {
18.通过默认的构造器创建ForkJoinPool线程池。
ForkJoinPool pool=new ForkJoinPool();
19.创建3个FolderProcessor任务,并使用不同的文件夹路径来初始化这些任务。
FolderProcessor system=new FolderProcessor("C:\\Windows","log");
FolderProcessor apps=new FolderProcessor("C:\\Program Files","log");
FolderProcessor documents=new FolderProcessor("C:\\Documents And Settings","log");
20.调用execute()方法执行线程池里的3个任务。fork/join框架
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40557-13.html
我国舰队才刚刚无害通过阿留申群岛海域
日本海上自卫队最近声称