fork/join框架_java forkjoinpool_fork join框架(13)

电脑杂谈  发布时间:2017-04-10 18:05:20  来源:网络整理

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

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 十年四月
      十年四月

    • 袁鹏程
      袁鹏程

      我国舰队才刚刚无害通过阿留申群岛海域

    • 苏素芝
      苏素芝

      日本海上自卫队最近声称

    热点图片
    拼命载入中...